DID Document
Endpoints para gestionar el cuerpo principal del DID Document: alta inicial, sustitución y actualización de campos.
Todos devuelven una transacción sin firmar que debe firmarse y enviarse a /transactions/send.
insertFirstDidDocument
POST /api/v1/contract/insertFirstDidDocument
Crea la transacción de alta inicial de un DID. Solo se invoca una vez por entidad, y requiere que la EOA from esté autorizada por ISBE para hacer onboarding.
Cuerpo
| Campo | Tipo | Required | Descripción |
|---|---|---|---|
did | string | sí | DID generado con did-gen did. |
baseDocument | string | no | JSON-string con el @context del DID Document. Si se omite, se usa el por defecto. |
vMethodId | string | sí | ID del verification method. 32 bytes en base64url (43 chars sin padding). |
proof | string | sí | Proof devuelto por did-gen did. |
publicKeyType | enum | sí | Solo secp256k1 en este endpoint. |
publicKey | string | sí | Clave pública uncompressed con prefijo 0x04. |
notBefore | number | sí | Timestamp Unix desde el que la clave es válida. |
notAfter | number | sí | Timestamp Unix de expiración. |
alsoKnownAs | string | sí | Identificador alternativo (p. ej. urn:oid:organizationIdentifier:...). |
from | string | sí | EOA de la secp256k1 que firmará. |
Ejemplo de cuerpo
{
"did": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"vMethodId": "9lfZ28jdUsYo75lVHmGNIc6oUpkjSFtxiCLjDGn28IM",
"proof": "0x70bc9d8cdf...",
"publicKeyType": "secp256k1",
"publicKey": "0x041243f50ac70fc996ccc92a...",
"notBefore": 1774602263,
"notAfter": 2090221463,
"alsoKnownAs": "urn:oid:organizationIdentifier:ISBE",
"from": "0xAe0E493C67f75381b0954644836A3C16c79D0dFD"
}
Respuesta
200 OK con la transacción sin firmar (ver estructura común).
Errores
400— Validación de campos.500— Error de la API o de la red.
Para el flujo completo de onboarding, ver Registro del DID.
insertDidDocument
POST /api/v1/contract/insertDidDocument
Sustituye el DID Document de una entidad que ya está registrada. Útil para rotar la clave de control inicial o reescribir contextos.
Diferencias con insertFirstDidDocument
- No requiere
alsoKnownAsen el cuerpo (no es obligatorio). - La autorización se valida contra el controlador actual del DID, no contra la lista de onboarding.
Cuerpo
| Campo | Tipo | Required | Descripción |
|---|---|---|---|
did | string | sí | DID existente. |
baseDocument | string | no | Nuevo JSON-string del @context. |
vMethodId | string | sí | ID del nuevo verification method. |
proof | string | sí | Proof de la nueva clave. |
publicKeyType | enum | sí | Solo secp256k1. |
publicKey | string | sí | Nueva clave pública uncompressed. |
notBefore | number | sí | Timestamp de inicio. |
notAfter | number | sí | Timestamp de fin. |
from | string | sí | EOA del controlador firmante. |
Respuesta
200 OK con la transacción sin firmar.
updateAlsoKnownAs
POST /api/v1/contract/updateAlsoKnownAs
Cambia el valor del campo alsoKnownAs del DID Document.
Cuerpo
{
"did": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"alsoKnownAs": "urn:oid:organizationIdentifier:NUEVO_CODIGO",
"from": "0xAe0E493C67f75381b0954644836A3C16c79D0dFD"
}
| Campo | Tipo | Required |
|---|---|---|
did | string | sí |
alsoKnownAs | string | sí |
from | string | sí |
updateBaseDocument
POST /api/v1/contract/updateBaseDocument
Actualiza el @context del DID Document. Útil si la entidad necesita añadir un contexto JSON-LD adicional.
Cuerpo
{
"did": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"baseDocument": "{\"@context\":[\"https://www.w3.org/ns/did/v1\",\"https://w3id.org/security/suites/jws-2020/v1\"]}",
"from": "0xAe0E493C67f75381b0954644836A3C16c79D0dFD"
}
| Campo | Tipo | Required |
|---|---|---|
did | string | sí |
baseDocument | string (JSON serializado) | sí |
from | string | sí |