SettleMint
Developer guidesAsset servicing

Change asset admin roles

Grant or revoke administrator roles for specific assets via API.

This guide explains how to programmatically modify administrator roles for specific assets using the DALP API. Use these endpoints to grant or revoke asset-level permissions for managing individual assets.

For the web interface approach, see the user guide.

Prerequisites

  • Platform URL (e.g., https://your-platform.example.com)
  • API key from a user with the admin role on the target asset (see Getting Started for API key setup)
  • Wallet verification method enabled on your account (e.g., pincode or 2FA)
  • Asset contract address of the asset to modify

When to change asset admin roles

Common scenarios

  • Initial deployment — Assign operators after asset creation
  • Role expansion — Operator taking on additional responsibilities
  • Role reduction — Removing permissions no longer needed
  • Team changes — Transferring responsibilities between operators
  • Automation — Integrating role management into provisioning workflows

Security considerations

  • Follow principle of least privilege
  • Remove roles when no longer needed
  • Document role changes for compliance
  • Coordinate with affected operators

About asset admin roles

Each asset has its own set of administrators with specific roles:

RoleDescriptionCommon use cases
adminPermission management for the assetManage other administrators' roles and permissions
custodianFreeze addresses, force transfers, and asset recoveryCustody/operations teams handling interventions
emergencyPause/unpause and ERC20 recovery actionsIncident response team, post-deploy unpausing
governanceAsset policy, verification, and compliance settingsTeam tuning compliance modules or governance parameters
supplyManagementMint and burn permissions via /api/token/:address/mintOperators issuing, redeeming, or retiring supply

Asset vs platform roles

Asset roles are specific to individual assets. Each asset has its own access control. Platform system roles (like tokenManager) control platform-wide capabilities. See Change Admin Roles for system roles.

Changing roles

Get asset details

Query the asset to review current role assignments:

curl -X GET "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220" \
  -H "X-Api-Key: YOUR_API_KEY"

Asset address in path

The asset contract address is part of the URL path: /api/token/{assetAddress}

Response (relevant fields):

{
  "id": "0x9459D52E60edBD3178f00F9055f6C117a21b4220",
  "name": "Example Asset",
  "symbol": "EXA",
  "decimals": 18,
  "accessControl": {
    "id": "0x1234567890AbCdEf1234567890AbCdEf12345678",
    "admin": [{ "id": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb" }],
    "custodian": [],
    "emergency": [],
    "governance": [{ "id": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb" }],
    "supplyManagement": []
  }
}

Review the accessControl field to see current role assignments. Each role contains an array of accounts with that role.

Grant a role

Grant one or more roles to a wallet address on the asset:

curl -X POST "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220/grant-role" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "roles": ["supplyManagement"],
    "walletVerification": { "secretVerificationCode": "YOUR_PINCODE" }
  }'

Response:

{
  "accounts": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"]
}

Grant multiple roles

Assign multiple roles to one wallet in a single transaction:

curl -X POST "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220/grant-role" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "roles": ["supplyManagement", "custodian"],
    "walletVerification": { "secretVerificationCode": "YOUR_PINCODE" }
  }'

Batch grant to multiple wallets

Grant the same role to multiple wallets efficiently:

curl -X POST "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220/grant-role" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "0x8e5F72f6E5b3B4D1234567890AbCdEf1234567890"],
    "role": "supplyManagement",
    "walletVerification": { "secretVerificationCode": "YOUR_PINCODE" }
  }'

Batch limitations

You cannot grant multiple roles to multiple addresses in a single transaction. Use separate requests for each address or each role combination.

Revoke a role

Remove one or more roles from a wallet address:

curl -X DELETE "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220/revoke-role" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "roles": ["supplyManagement"],
    "walletVerification": { "secretVerificationCode": "YOUR_PINCODE" }
  }'

Response:

{
  "accounts": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"]
}

Revoke multiple roles

Remove multiple roles from one wallet in a single transaction:

curl -X DELETE "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220/revoke-role" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "roles": ["supplyManagement", "custodian"],
    "walletVerification": { "secretVerificationCode": "YOUR_PINCODE" }
  }'

Batch revoke from multiple wallets

Revoke the same role from multiple wallets efficiently:

curl -X DELETE "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220/revoke-role" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "0x8e5F72f6E5b3B4D1234567890AbCdEf1234567890"],
    "role": "supplyManagement",
    "walletVerification": { "secretVerificationCode": "YOUR_PINCODE" }
  }'

Verify changes

Confirm role changes by fetching updated asset details:

curl -X GET "https://your-platform.example.com/api/token/0x9459D52E60edBD3178f00F9055f6C117a21b4220" \
  -H "X-Api-Key: YOUR_API_KEY"

The response shows all current role assignments in the accessControl field. Verify the changes were applied correctly.

Request parameters

ParameterTypeRequiredDescription
accountstringYes*Single wallet address for role assignment
accountsstring[]Yes*Multiple wallet addresses (alternative to account)
rolestringYes*Single role to grant/revoke (use with accounts)
rolesstring[]Yes*Multiple roles to grant/revoke (use with account)
walletVerificationobjectYesYour wallet verification to authorize the blockchain transaction

*Use either account + roles OR accounts + role

Wallet verification object

FieldTypeDescription
secretVerificationCodestring6-digit pincode or TOTP code
verificationTypestring"PINCODE" (default), "SECRET_CODES", or "OTP"

Response fields

FieldTypeDescription
accountsarrayWallet addresses that were modified

Best practices

Role assignment

  • Principle of least privilege — Grant only necessary roles
  • Separation of duties — Divide critical functions among multiple administrators
  • Regular review — Audit role assignments when responsibilities change
  • Documentation — Record role changes and business rationale

Security

  • Limit the admin role to trusted individuals
  • Separate operational roles from governance roles
  • Maintain backup administrators for critical roles
  • Use different wallets for different administrative functions

Operations

  • Assign Supply Management to asset operators who mint/burn
  • Give Emergency role to operations team for incident response
  • Separate Custodian role for transfer management and compliance
  • Reserve Governance for strategic configuration decisions

Troubleshooting

IssueSolution
Permission deniedVerify you have the admin role on this specific asset.
Asset not foundCheck the asset contract address is correct. Ensure the asset is deployed on this platform.
Role not foundCheck the role name matches exactly (case-sensitive). Valid roles: admin, custodian, emergency, governance, supplyManagement.
Transaction failsEnsure wallet has sufficient gas. Verify PIN/OTP is correct. Check network connectivity.
Changes not visibleWait for blockchain confirmation. Refresh asset details. Check transaction was successful.
Cannot revoke own roleHave another user with the admin role to revoke your role if needed.

On this page