Saltar al contenido principal

Resolución de DIDs

La DID Registry API permite resolver un DID, es decir, obtener su DID Document tanto en el estado actual como en cualquier momento del pasado. Esto es esencial para verificar credenciales: un verificador necesita saber qué clave estaba vigente en el momento de la firma.

Resolución básica

GET /api/v1/identifiers/{identifier}

Donde {identifier} es el DID completo (URL-encode si contiene caracteres especiales).

Ejemplo

curl -H "Accept: application/did+ld+json" \
"https://did-registry.portal.redisbe.com/api/v1/identifiers/did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV"

Respuesta (200 OK):

{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/jws-2020/v1"
],
"id": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"controller": ["0xAe0E493C67f75381b0954644836A3C16c79D0dFD"],
"verificationMethod": [
{
"id": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV#9lfZ28jdUsYo75lVHmGNIc6oUpkjSFtxiCLjDGn28IM",
"type": "JsonWebKey2020",
"controller": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"publicKeyJwk": {
"kty": "EC",
"crv": "secp256k1",
"x": "EkP1CscPyZbMySohGc5ktvcLv0yh/Tsl/Fyk/T6jUlsK",
"y": "FD4PfiOzITnM4zo9IgfvkN7DC4VxRSB4f-PKcTfcMyE"
}
},
{
"id": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV#WqpsDjTHnYVNvX8qx4a1FER8NgnEBS6DjLbDVrX-Fg4",
"type": "JsonWebKey2020",
"controller": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-256",
"x": "...",
"y": "..."
}
}
],
"assertionMethod": [
"did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV#WqpsDjTHnYVNvX8qx4a1FER8NgnEBS6DjLbDVrX-Fg4"
],
"alsoKnownAs": ["urn:oid:organizationIdentifier:ISBE"]
}
Tipo de los verificationMethod al resolver

Todos los verification methods se devuelven con type: "JsonWebKey2020" y el material en publicKeyJwk, independientemente de la curva. La curva real se identifica en el campo crv dentro del JWK (secp256k1, P-256). Esto es coherente con el modelo W3C JSON Web Key 2020 y se aplica también a la clave inicial de control del DID.

Resolución en un instante concreto (valid-at)

Para verificar credenciales antiguas necesitas saber qué claves estaban activas en una fecha concreta. Añade el parámetro valid-at como timestamp Unix en segundos:

curl -H "Accept: application/did+ld+json" \
"https://did-registry.portal.redisbe.com/api/v1/identifiers/did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV?valid-at=1742000000"

La respuesta contendrá únicamente los verificationMethod cuya ventana [notBefore, notAfter] incluya ese timestamp.

Caso de uso

Imagina que recibes una credencial firmada el 15 de marzo de 2026. Si la verificas en mayo, una clave puede haber rotado entre medias. Resuelve el DID con valid-at=<timestamp del iat de la VC> para obtener exactamente las claves que estaban vigentes al firmar.

Tipos de contenido soportados

El endpoint soporta dos formatos a través del header Accept:

AcceptFormato
application/did+ld+jsonDID Document como JSON-LD (recomendado).
application/did+jsonDID Document como JSON plano.

Si solicitas un tipo no soportado, la API responde con 406 Not Acceptable.

Listado paginado de DIDs

Para casos administrativos o de auditoría, la API expone también un listado paginado:

GET /api/v1/identifiers?page=1&pageSize=50

Respuesta:

{
"page": 1,
"pageSize": 50,
"total": 1234,
"howMany": 50,
"items": [
"did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"did:isbe:uc:z2ABCdef...",
"..."
]
}
Privacidad

Este listado no expone información sensible: solo los identificadores. Para obtener el DID Document de cada uno hay que llamar al endpoint de resolución individual.

Errores típicos

CódigoCausa
400 Bad RequestEl identifier no tiene formato did:isbe:... válido, o valid-at no es un número.
404 Not FoundEl DID no existe en el registro.
406 Not AcceptableHeader Accept no soportado.

Más detalle en Troubleshooting.