Saltar al contenido principal

Verification Relationships

Una verification relationship expresa para qué se puede usar una clave previamente registrada en el DID. Una clave puede tener varias relaciones simultáneas, pero al menos una es obligatoria para que la clave sea operativa.

addVerificationRelationship

POST /api/v1/contract/addVerificationRelationship

Asocia una relación de verificación a una clave existente en el DID.

Cuerpo

CampoTipoRequiredDescripción
didstringDID afectado.
namestringNombre de la relación. Valores típicos: assertionMethod, authentication, keyAgreement, capabilityInvocation, capabilityDelegation.
vMethodIdstringID del verification method al que se asocia la relación. Debe existir previamente.
notBeforenumberTimestamp Unix desde el que la relación es válida.
notAfternumberTimestamp Unix en el que la relación expira.
fromstringEOA del controlador firmante.

Valores de name admitidos

nameSignificado
authenticationLa clave puede autenticarse como el DID (p. ej. SIOPv2, login).
assertionMethodLa clave puede firmar credenciales y acreditaciones verificables.
keyAgreementLa clave puede participar en acuerdos de clave (DH, ECDH-ES).
capabilityInvocationLa clave puede invocar capacidades delegadas.
capabilityDelegationLa clave puede delegar capacidades.

Ejemplo

{
"did": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"name": "assertionMethod",
"vMethodId": "WqpsDjTHnYVNvX8qx4a1FER8NgnEBS6DjLbDVrX-Fg4",
"notBefore": 1774603242,
"notAfter": 2090222442,
"from": "0xAe0E493C67f75381b0954644836A3C16c79D0dFD"
}

Respuesta

200 OK con la transacción sin firmar.

Errores frecuentes

  • 400 si vMethodId no existe en el DID (debes registrarlo antes con addVerificationMethod).
  • 400 si notBefore >= notAfter.
Patrón habitual

Para una entidad emisora, el patrón completo de alta de una clave operacional es:

  1. addVerificationMethod con publicKeyType=JsonWebKey2020.
  2. addVerificationRelationship con name=assertionMethod.

Sin el segundo paso, la clave no se puede usar para firmar credenciales.

Notas sobre revocación de relaciones

Actualmente la API no expone un endpoint específico para revocar una relación individual. Para invalidar una relación:

  • Revoca o expira el verification method completo con revokeVerificationMethod o expireVerificationMethod. La relación deja automáticamente de aplicar.
  • Si solo quieres cambiar el uso (por ejemplo, pasar de authentication a assertionMethod), añade la nueva relación y deja que la antigua expire por notAfter.