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
didstringsíDID afectado.
namestringsíNombre de la relación. Valores típicos: assertionMethod, authentication, keyAgreement, capabilityInvocation, capabilityDelegation.
vMethodIdstringsíID del verification method al que se asocia la relación. Debe existir previamente.
notBeforenumbersíTimestamp Unix desde el que la relación es válida.
notAfternumbersíTimestamp Unix en el que la relación expira.
fromstringsíEOA 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.