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 '…' --unverifieddodil 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 # gonedodil appid user set-roles my-app <user-id> admin editor # REPLACES the role setset-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 --yesMembership
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 rolesMembership 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.