Roles enable you to control access to the platform on a granular basis (following the principle of least privilege). As an example, if you have an employee who needs to initiate payments, but shouldnβt be able to manipulate policies, you can create a role for that. Start by creating a role, selecting which permissions to include, and assigning it to a user.Documentation Index
Fetch the complete documentation index at: https://docs.dfns.co/llms.txt
Use this file to discover all available pages before exploring further.
Terminology
- Role: a role is a named collection of permissions that can be assigned to users or service accounts. When assigned, a role allows the user to perform those actions in the platform. Each role has a unique name and ID. A role can be assigned to one or multiple users, depending on what you need.
- Permission: a permission grants access to one action in the API (e.g.
Wallets:Create). There is a fixed list of permissions (see below) that you can include in roles. Every API endpoint requires one or more permissions to use it. - Assignment: the act of granting a role to a user or service account. A role can be assigned (aka βgrantedβ) or unassigned (aka βrevokedβ).
Dfns-managed roles
When your Dfns organization is created, some roles already exist in it. They are special: some of them are automatically assigned, and some of them are immutable (cannot be updated or archived).ManagedFullAdminAccess
This role is automatically assigned to the first user of the organization. It includes all existing (and future) permissions available in the Dfns API. Itβs immutable, so you cannot update it or archive it. You can only assign it or revoke it.
ManagedDefaultEndUserAccess
This role is assigned by default to any new EndUser in your organization, and comes with an initial set of permissions (which you can update at any time) allowing any EndUser to use the wallet delegated to them by default.
Regardless of roles, an
EndUser can only access wallets delegated to them. This role does not allow end-users to access your organizationβs wallets. See Wallet Visibility below.User types
Dfns supports three types of identities, each designed for different use cases:| Type | Description | Typical use |
|---|---|---|
CustomerEmployee | Your team members | Dashboard access, wallet management |
EndUser | Your end customers | Delegated wallets (user holds signing authority) |
| Service Account | Machine identity | Automation, server-to-server API calls |
Comparison matrix
| Capability | CustomerEmployee | EndUser | Service Account |
|---|---|---|---|
| Wallet visibility | All org wallets | Only delegated wallets | All org wallets |
| Dashboard access | Yes | No | No |
| Policy coverage | Yes | No (bypassed) | Yes |
| Can hold credentials | Yes (passkeys, keys) | Yes (passkeys, keys) | Yes (keys only) |
| Created via | Dashboard or API | Delegated registration | Service Account API |
Wallet visibility
The wallets a user can see depends on their user type:| User Type | Wallet Visibility |
|---|---|
CustomerEmployee | All wallets in the organization |
EndUser | Only wallets delegated to them |
| Service Account | All wallets in the organization |
Wallets:Read, they can see all org-managed wallets. This enables shared visibility across your team for operational purposes.
EndUser accounts are for your end customers using delegated wallets. Each EndUser can only access wallets that have been delegated to them - they cannot see other usersβ wallets or your organizationβs wallets. This isolation is enforced at the platform level, regardless of permissions.
Service Accounts are machine identities for server-to-server API calls. They can access all organization wallets (when granted appropriate permissions) and are commonly used for automation workflows.
Delegated wallets strictly belong to the EndUser they are delegated to. No one else in the organization can access or manage them - this includes policies, which do not apply to delegated wallets. Only the EndUser can sign transactions for their wallets.
Role assignment
To assign roles to users, you need thePermissions:Assign permission. You can also create policies on Permissions:Assign activity to require approval for role changes.
List of permissions
Agreements:Acceptance:Create
- Record agreement acceptance ( β doc)
Agreements:Acceptance:Read
- Get latest unaccepted agreement ( β doc)
Allocations:Create
- Create allocation ( β doc)
Allocations:Read
Allocations:Update
- Create allocation action ( β doc)
Auth:Login:Delegated
- Delegated login ( β doc)
Auth:Logs:Read
Auth:Pats:Create
- Create personal access token ( β doc)
Auth:Recover:Delegated
- Create delegated recovery challenge ( β doc)
Auth:Register:Delegated
- Create delegated registration challenge ( β doc)
Auth:ServiceAccounts:Activate
- Activate service account ( β doc)
Auth:ServiceAccounts:Create
- Create service account ( β doc)
Auth:ServiceAccounts:Deactivate
- Deactivate service account ( β doc)
Auth:ServiceAccounts:Delete
- Delete service account ( β doc)
Auth:ServiceAccounts:Read
Auth:ServiceAccounts:Update
- Update service account ( β doc)
Auth:Users:Activate
- Activate user ( β doc)
Auth:Users:Create
- Create user ( β doc)
Auth:Users:Deactivate
- Deactivate user ( β doc)
Auth:Users:Delete
- Delete user ( β doc)
Auth:Users:Read
Auth:Users:Update
- Update user ( β doc)
Exchanges:Create
- Create exchange ( β doc)
Exchanges:Delete
- Delete exchange ( β doc)
Exchanges:Deposits:Create
- Create exchange deposit ( β doc)
Exchanges:Read
- Get exchange ( β doc)
- List exchanges ( β doc)
- List accounts ( β doc)
- List account assets ( β doc)
- List asset withdrawal networks ( β doc)
Exchanges:Withdrawals:Create
- Create exchange withdrawal ( β doc)
FeeSponsors:Create
- Create fee sponsor ( β doc)
FeeSponsors:Delete
- Delete fee sponsor ( β doc)
FeeSponsors:Read
FeeSponsors:Update
FeeSponsors:Use
- Sign and broadcast transaction ( β doc) Required if
feeSponsorIdis specified - Transfer asset ( β doc) Required if
feeSponsorIdis specified
KeyStores:Read
- List key stores ( β doc)
Keys:ChildKeys:Create
- Create key ( β doc) Required if
deriveFromis specified
Keys:Create
- Create key ( β doc)
- Create wallet ( β doc) Required if wallet creation also creates a new Key entity. This is the default behavior
Keys:Delegate
- Create key ( β doc) Required if
delegateTois specified - Delegate key ( β doc)
- Create wallet ( β doc) Required if
delegateTois specified
Keys:Delete
- Delete key ( β doc)
Keys:Derive
- Derive key ( β doc)
Keys:Export
- Export key ( β doc)
Keys:Import
Keys:Read
Keys:Reuse
- Create wallet ( β doc) Required if
signingKey.idis specified. Wallet will reuse an existing key instead of creating a new one
Keys:Signatures:Create
- Generate signature ( β doc)
Keys:Signatures:Read
Keys:Update
- Update key ( β doc)
Networks:CantonValidators:Create
- Create canton validator ( β doc)
Networks:CantonValidators:Delete
- Delete canton validator ( β doc)
Networks:CantonValidators:Read
Networks:CantonValidators:Update
- Update canton validator ( β doc)
Payouts:Create
Payouts:Read
Payouts:Write
- Create payout action ( β doc)
Permissions:Archive
- Archive permission ( β doc)
Permissions:Assign
- Assign permission ( β doc)
Permissions:Assignments:Read
- List permission assignments ( β doc)
Permissions:Create
- Create permission ( β doc)
Permissions:Read
Permissions:Revoke
- Revoke permission ( β doc)
Permissions:Update
- Update permission ( β doc)
Policies:Approvals:Approve
- Create approval decision ( β doc)
Policies:Approvals:Read
Policies:Archive
- Delete policy ( β doc)
Policies:Create
- Create policy ( β doc)
Policies:Read
Policies:Update
- Update policy ( β doc)
Signers:ListSigners
- List signers ( β doc)
Stakes:Create
- Create stake ( β doc)
Stakes:Read
- List stakes ( β doc)
- List stake actions ( β doc)
- Get stakes ( β doc)
- Get stake rewards ( β doc)
Stakes:Update
- Create stake action ( β doc)
Swaps:Create
- Create swap ( β doc)
Swaps:Read
Wallets:Create
Wallets:Offers:Read
Wallets:Offers:Settle
Wallets:Read
- List wallets ( β doc)
- Get wallet ( β doc)
- Get wallet assets ( β doc)
- Get wallet history ( β doc)
- Get wallet nfts ( β doc)
- List org wallet history ( β doc)
Wallets:Tags:Add
Wallets:Tags:Delete
- Untag wallet ( β doc)
Wallets:Transactions:Abort
- Abort transaction ( β doc)
Wallets:Transactions:Create
- Sign and broadcast transaction ( β doc)
- Cancel transaction ( β doc)
- Cancel transfer ( β doc)
- Speed up transaction ( β doc)
- Speed up transfer ( β doc)
Wallets:Transactions:Read
- List transactions ( β doc)
- Cancel transaction ( β doc)
- Speed up transaction ( β doc)
- Get transaction ( β doc)
Wallets:Transfers:Abort
- Abort transfer ( β doc)
Wallets:Transfers:Create
Wallets:Transfers:Read
- Cancel transfer ( β doc)
- Speed up transfer ( β doc)
- Get transfer ( β doc)
- List transfers ( β doc)
Wallets:Update
- Update wallet ( β doc)
Webhooks:Create
- Create webhook ( β doc)
Webhooks:Delete
- Delete webhook ( β doc)
Webhooks:Events:Read
Webhooks:Ping
- Ping webhook ( β doc)
Webhooks:Read
Webhooks:Update
- Update webhook ( β doc)
