Abstract
SWIDs are identifiers for the Spatial Web (Spatial Web Foundation), based on the with the following design goals and properties:
All Spatial Web Entities (including Credentials) have SWIDs.
The Spatial Web SWID Registry ensures uniqueness of the SWIDs.
Most SWIDs will be created by a DID Issuer at behest of the Entity and not recorded in a centralized registry.
The Spatial Web will include Entities with DIDs created without interaction with any particular authority.
1. Scope
This document defines spatial web identifiers (SWIDs) and SWID documents, based on the decentralized identifier (DID) (W3C did-core).
In the Spatial Web, SWIDs are used as identifiers for Entities and Domains.
2. Normative references
The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.
W3C did-core, World Wide Web Consortium. Decentralized Identifiers (DIDs) v1.0. https://www.w3.org/TR/did-core/.
3. Terms and definitions
For the purposes of this document, the following terms and definitions apply.
3.1. spatial web identifier
SWID
conformant DID (3.3) whose associated DID document (3.5) is a conformant SWID document (3.2)
3.2. SWID document
DID document (3.5) conformant to Clause 5 of this document
3.3. decentralized identifier
DID
type of identifier that enable verifiable, decentralized digital identities
Note 1 to entry: A DID refers to any subject (e.g., a person, organization, thing, data model, abstract entity, etc.) as determined by the controller of the DID.
SOURCE: W3C did-core
3.4. DID controller
entity that controls (create, updates, deletes) a given DID (3.3)
SOURCE: W3C did-core
3.5. DID document
the document returned when a DID (3.3) is resolved
SOURCE: W3C did-core
3.6. DID method
mechanism by which a particular type of DID (3.3) and its associated DID document (3.5) are created, resolved, updated, and deactivated
Note 1 to entry: DID methods are defined using separate DID method specifications.
3.7. SWID registry
register of spatial web identifier (3.1) registrations managed by a designated authority
4. SWIDs
A Spatial Web Identifier (SWID) is any DID which fulfills the following two requirements:
The DID and its associated DID document MUST be conformant with the W3C did-core specification.
The associated DID document MUST be a conformant SWID Document (Clause 5).
There is no direct restriction for SWIDs with regard to which DID method they use, as long as the two requirements above are fulfilled. Different DID methods have different properties with regard to decentralization, scalability, cost, etc. Depending on the use case, some DID methods may be more suited than others due to such properties.
Note that some DID methods have technical limitations that make them unsuitable for SWIDs. For example, the did:key DID method does not support service endpoints in DID documents, therefore this DID method cannot be used for SWIDs.
Note that one DID method — did:swid — has been specifically designed to meet the requirements of SWIDs for the Spatial Web (SWF 4:2025 (0.1.0)).
4.1. Example SWIDs
The following are compliant SWIDs using different DID methods:
did:web:did-web.dev.godiddy.com:575dcb04-9219-49a8-a6ac-0f982ee17438
did:cheqd:testnet:348e4b40-dff4-4f07-987b-833e3f6e01be
did:indy:danube:MafjMzJVnX7p5FEv47k8hi
did:ethr:sepolia:0x0349de79b43afff92e1db0806272aacc3bd644f0b5622d2dfa310f2aa7180be3f2
did:ebsi:zeUucvX2jE79e75xXSxf9S2
did:ion:test:EiBBuOWqiR-KD5KByXG8hQ2vycAmT_k3o0agsA1Ntd2guA
They can be resolved using DID Resolution tools such as uniresolver.io or godiddy.com.
5. SWID Documents
SWIDs — like all DIDs — resolve to DID documents as defined by the W3C did-core specification.
This specification defines a profile of the DID document data structure called a SWID Document. SWID Documents are fully conformant DID documents and can include verification methods, service endpoints, and other technical metadata.
In addition, SWID Documents MUST fulfill the following requirement:
The SWID Document MUST have at least one HSTP Service Endpoint (5.1) and MAY have more than one.
5.1. HSTP Service Type
This specification defines a new service type HSTPEndpoint, which points to a Hyperspace Transaction Protocol (HSTP) endpoint for a Spatial Web Node where the entity lives.
{
"service": [{
"id": "did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv#hstp",
"type": "HSTPEndpoint",
"serviceEndpoint": "https://hstp.example.com/hstpendpoint"
}]
}
An HSTP service in a SWID Document can optionally express a “profile”, in order to indicate which protocols or bindings are supported by the endpoint (e.g. XMPP, RPC, etc.):
{
"service": [{
"id": "did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv#hstp",
"type": "HSTPEndpoint",
"serviceEndpoint": "https://hstp.example.com/hstpendpoint",
"profile": "HSTPXMPPProfile"
}]
}
5.2. Example SWID Document
The following is an example of a complete SWID Document for a SWID:
{
"@context": [
"https://www.w3.org/ns/did/v1.1",
"https://spatialwebfoundation.org/contexts/did/1.0"
],
"id": "did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv",
"verificationMethod": [{
"id": "did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv#keys-1",
"type": "Multikey",
"controller": "did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv",
"publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
}],
"authentication": [
"did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv#keys-1"
],
"assertionMethod": [
"did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv#keys-1"
],
"service": [{
"id": "did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv#hstp",
"type": "HSTPEndpoint",
"serviceEndpoint": "https://hstp.example.com/hstpendpoint"
}]
}
6. SWID Registration
SWIDs may be registered by the Entity in a “SWID Registry”, which is managed by a “Designated Authority”.
The following diagram describes the process of registering a SWID using a “SWID Registry”:
Figure 1 — Process of registering a SWID using a SWID Registry
Note that registration of SWIDs in a registry is an optional step that is separate from the creation of SWIDs. Most SWIDs will not be recorded in a centralized registry. SWIDs may be registered in a system of distributed, decentralized registries. The purpose of registration is to express membership, and to enable search.
Registration of a SWID returns a Verifiable Credential (VC) that expresses membership of an Entity in a Domain.
SWIDs are DIDs that can use any DID method, as long as the DIDs fulfill the requirements in Clause 4.
An Entity can “bring its own SWID”, which had already been created previously, according to the applicable DID method’s create function (DIF did-registration).
If an Entity does not yet have a SWID, the processes of creating and registering a SWID can be combined in a single flow. In this case, the did:swid DID method MUST be used, which has been specifically designed to meet the requirements of SWIDs for the Spatial Web. See SWF 4:2025 (0.1.0) for the specification.
To register a SWID in a “SWID Registry”, the execute function (DIF did-registration) is used.
EXAMPLE 1 — Request to register a SWID
HTTP POST to https://<swid-registry>/execute
{
"operation": [
"addToRegistry"
],
"operationData": [
{}
],
"did": "did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv#hstp",
"secret": {},
"options": {}
}
EXAMPLE 2 — Response
{
"didState": {
"state": "finished"
},
"operationResult": [{
"membershipCredential": {
...
}
}]
}
EXAMPLE 3 — Membership Credential
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://spatialwebfoundation.org/contexts/registry/"
],
"type": [
"VerifiableCredential",
"DomainMembershipCredential"
],
"issuer": {
"id": "did:web:example.com",
"type": [
"Entity",
"DomainAuthority"
]
},
"validFrom": "2025-07-01T00:00:00Z",
"validUntil": "2034-08-31T23:59:59Z",
"credentialSubject": {
"id": "did:swid:zQmQoeG7u6XBtdXoek5p3aPoTjaSRemHAKrMcY2Hcjpe3jv",
"type": [
"Entity",
"Domain",
"Person"
],
"roles": [
"DomainMember",
"LoyaltyProgramMember"
],
"abilities": [ ... ]
},
"proof": {
...
}
}
During the process of registering a SWID, the Entity MAY be required to prove control of its SWID’s associated public key, using DID Signing Requests (DIF did-registration) and Signing Responses (DIF did-registration).
EXAMPLE 4 — Signing Request
{
"jobId": "96202012-41d8-424a-85a9-3673bda6abc7",
"didState": {
"state": "action",
"action": "signPayload",
"signingRequest": {
"signingRequestRegistration": {
"kid": "#keys-1",
"alg": "EdDSA",
"purpose": "authentication",
"serializedPayload": "<-- base 64 encoded -->"
}
}
},
"didRegistrationMetadata": { ... },
"didDocumentMetadata": { ... }
}
EXAMPLE 5 — Signing Response
{
"jobId": "96202012-41d8-424a-85a9-3673bda6abc7",
"options": {
"clientSecretMode": true
},
"secret": {
"signingResponse": {
"signingRequestRegistration": {
"signature": "<-- base64 encoded -->"
}
}
},
"didDocument": {}
}
7. SWID Registration (previous)
This section contains an earlier diagram which describes the process of registering SWIDs. This may be removed in a future version of this document.
Figure 2 — SWID Registration
Annex A
(informative)
Version log
The following lists the substantive changes in each version of the specification.
Version 0.1
Initial version
Bibliography
[1] Spatial Web Foundation, Spatial Web Foundation. Spatial Web Foundation. https://spatialwebfoundation.org/.
[2] DIF did-registration, Decentralized Identity Foundation, Cihan SAGLAM and Ahamed AZEEM. DID Registration. 2025. https://identity.foundation/did-registration.
[3] SWF 4:2025 (0.1.0), Spatial Web Foundation. The did:swid DID Method. 2025. https://spatial-web-foundation.github.io/did-swid-spec/.
[4] uniresolver.io, uniresolver.io. https://dev.uniresolver.io/.
[5] godiddy.com, godiddy.com. godiddy.com. https://godiddy.com/.