Controllers
A controller is an account authorized to modify the DID Document. Any write transaction on a DID is validated against the list of active controllers.
addController
POST /api/v1/contract/addController
Adds a new controller to the DID.
Body
{
"did": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"controller": "0x<NEW_EOA>",
"from": "0x<CURRENT_CONTROLLER_EOA>"
}
| Field | Type | Required | Description |
|---|---|---|---|
did | string | yes | DID to which the controller is added. |
controller | string | yes | DID or EOA to be authorized as an additional controller. |
from | string | yes | EOA of a current controller that will sign the transaction. |
Response
200 OK with the unsigned transaction.
Use Cases
- Delegating the administration of the DID to another area of the organization.
- Distributing responsibility among multiple EOAs (redundancy model).
- Migrating control to an HSM or a custody service.
revokeController
POST /api/v1/contract/revokeController
Revokes an existing controller.
Body
{
"did": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"controller": "0x<EOA_TO_REVOKE>",
"from": "0x<CURRENT_CONTROLLER_EOA>"
}
| Field | Type | Required | Description |
|---|---|---|---|
did | string | yes | Affected DID. |
controller | string | yes | Controller to remove. |
from | string | yes | EOA of another controller with permissions to sign. |
Response
200 OK with the unsigned transaction.
Do not leave yourself without a controller
Revoking the last controller leaves the DID irreversibly locked: it will never be possible to modify or rotate it again. Before revoking, verify that at least one other active controller exists.