Skip to Content
We are live but in Staging 🎉
CLI GuideUsers & Tenants

Users & tenants

user

# create with a password… dodil appid user create my-app [email protected] --password 'S3curePass!' --roles admin # …or invite: no --password sends an email link to set one dodil appid user create my-app [email protected] # created verified by default; --unverified forces the email-verification step dodil appid user create my-app [email protected] --password '…' --unverified
dodil appid user list my-app # newest first, 50 per page dodil appid user list my-app --filter jane --limit 200 --cursor <next_cursor> dodil appid user list my-app --include-deleted dodil appid user get my-app <user-id> dodil appid user update my-app <user-id> --email [email protected] --verified=true

--filter is an email prefix match; pagination is cursor-based (next_cursor in the response, --cursor to continue); --limit caps at 500.

Lifecycle

dodil appid user set-password my-app <user-id> 'NewPass!9' # revokes sessions… dodil appid user set-password my-app <user-id> 'NewPass!9' --keep-sessions dodil appid user revoke-sessions my-app <user-id> # sign out everywhere dodil appid user ban my-app <user-id> # blocks sign-in, keeps the record dodil appid user unban my-app <user-id> dodil appid user delete my-app <user-id> --yes # soft delete (recoverable, hidden) dodil appid user delete my-app <user-id> --yes --hard # gone
dodil appid user set-roles my-app <user-id> admin editor # REPLACES the role set

set-roles is a replace, not a merge — pass the full desired list. Roles resolve to permissions through the pool’s catalog.

tenant

Tenants are sub-organizations inside the pool — workspaces, subsidiaries — with per-tenant member roles. Slugs are 1–63 chars of [a-z0-9-] and immutable.

dodil appid tenant create my-app acme-uk --display-name "Acme UK" dodil appid tenant list my-app dodil appid tenant update my-app acme-uk --display-name "Acme United Kingdom" \ --metadata '{"region":"eu"}' dodil appid tenant delete my-app acme-uk --yes

Membership

dodil appid tenant member set my-app acme-uk <user-id> --roles manager,approver # replaces dodil appid tenant member remove my-app acme-uk <user-id> dodil appid tenant member list my-app acme-uk --limit 100 dodil appid tenant of-user my-app <user-id> # every tenant this user belongs to, with roles

Membership shows up in tokens automatically: every access token carries the user’s tenants map, and signing in with tenant=acme-uk pins the token and merges the tenant roles’ permissions — see Core Concepts → App tenants.