workspace-users
Manage the humans on your Celigo account — invite teammates, adjust their access levels, and remove access when people move on. Workspace users are your team's account collaborators (the /v1/ashares access records) with access levels like administrator, manage, and monitor. External people who only sign in to use your MCP servers are a different resource — see end-users.
The group was renamed in celigo-cli 2026.8.7. It was previously
users; with external end users joining the CLI, the unqualified name stopped saying which kind of user it manages.usersremains a working hidden alias —celigo users listandceligo workspace-users listare the same command, and aliased invocations hit the same permission gates. Only the primary name in--helpand the documentation changed.
REST API: Users
celigo workspace-users <subcommand> [args] [flags]Supports all global flags.
Subcommands
list
List every workspace user (ashare) on the account.
get <id>
Fetch one workspace user by ashare ID.
update <id>
Replace a user record from a JSON body (--file <path> or stdin); destructive PUT.
set <id> key=value …
Safe field edit via PATCH (whitelisted fields) or GET → modify → PUT.
delete <id>
Remove a workspace user from the account.
invite
Invite one or more users by email (no create — use invite).
reinvite <id>
Re-send an invite to a user who dismissed it.
disable <userId>
Disable a user's account access (non-destructive).
enable <userId>
Re-enable a disabled user's account access.
There is no
celigo workspace-users create. Users are added by emailing an invitation; useinvite. To temporarily revoke access without losing history, usedisable(andenableto restore it); usedeleteto remove access entirely.
celigo workspace-users list
List all ashares on the account — i.e. every person with workspace access, plus any pending invites.
Signature
Flags
--integration <id>
string
—
List only users belonging to this integration.
Plus the global flags. The default table columns are _id, accessLevel, accepted, lastModified.
Example
Corresponds to: GET /v1/ashares
celigo workspace-users get <id>
Fetch a single workspace user (ashare) record.
Signature
Arguments
<id>
string
Yes
Ashare ID (the _id from workspace-users list, not the underlying _userId).
Example
Corresponds to: GET /v1/ashares/{_id}
celigo workspace-users update <id>
Full replace of a user record from a JSON body. Read the body from a file with -f, --file or pipe it on stdin. This is a destructive PUT — every omitted field is erased. Prefer set for targeted edits.
⚠️
updatereplaces the entire user record.PUTerases any field you omit —accessLevel,integrationAccessLevel[], MFA and SSO flags.GETthe record first, edit it, then send the complete object back, or usesetfor targeted edits.
Signature
Arguments
<id>
string
Yes
Ashare ID.
Flags
-f, --file <path>
string
—
Read the JSON body from a file instead of stdin (--file - also means stdin). Added in celigo-cli 2026.6.1.
--force
boolean
false
Submit even if the body contains masked credential values (***) copied from a GET.
Request body
Reads JSON on stdin (or from --file). See the PUT /v1/ashares/{_id} request schema for the full payload shape (accessLevel, integrationAccessLevel[], accountSSORequired, accountMFARequired, allowAccessToAPIM, allowToEditRetryData, disabled).
Example
Corresponds to: PUT /v1/ashares/{_id}
celigo workspace-users set <id> [assignments...]
Edit one or more fields on a workspace user. Whitelisted fields (e.g. name, disabled) are applied via an atomic PATCH; other fields go through GET → modify → PUT. Safer than update because omitted fields are preserved.
Signature
Arguments
<id>
string
Yes
Ashare ID.
[assignments...]
key=value pairs
Yes
At least one assignment. Values are auto-parsed (accountMFARequired=true → boolean, allowToEditRetryData=null → removes field). Dot and array-index notation supported. Use key=file://<path> to load a value from a file.
Example
Corresponds to: GET /v1/ashares/{_id} then PUT /v1/ashares/{_id}
celigo workspace-users delete <id>
Remove a workspace user from the account. Prompts for confirmation unless --yes is passed.
⚠️ Deleting a user removes their access record and cannot be undone. To revoke access while keeping the user's history, use
disableinstead.
Signature
Arguments
<id>
string
Yes
Ashare ID.
Flags
-y, --yes
boolean
false
Skip the confirmation prompt.
Example
Corresponds to: DELETE /v1/ashares/{_id}
celigo workspace-users invite
Invite one or more users to the account by email. Use this instead of create — users always enter the account through an invitation flow. --email is repeatable; the access settings apply uniformly to every email in the batch.
Signature
Flags
--email <emails...>
string
—
Required. Email address(es) to invite. Repeatable; pass once per invitee.
--access-level <level>
monitor | manage | administrator
—
Account-wide access level. Omit to create integration-only (custom) access (see --integration).
--integration <mapping...>
<integrationId>=<monitor|manage>
—
Per-integration access grant. Repeatable. Combine with --access-level monitor for elevated per-integration access, or omit --access-level entirely for integration-only access.
--mcp-server <mapping...>
<mcpServerId>=<scope[,scope...]>
—
MCP server access grant (e.g. mcp1=mcp:read,mcp:write). Repeatable. Deprecated upstream — the API still accepts and returns mcpServerAccessLevel, but do not build on it: for new work use end-users invite --grant and mcp-servers assign-end-users/assign-groups.
--force-mfa
boolean
false
Require MFA for this user in this account (sets accountMFARequired: true).
--force-sso
boolean
false
Require SSO for this user (account must have SSO configured). Sets accountSSORequired: true.
--allow-edit-retry-data
boolean
false
Allow the user to edit retry data when troubleshooting flow errors. Only meaningful when the user's effective access level is monitor. Sets allowToEditRetryData: true.
Request body
The flags map onto the POST /v1/invite/multiple request schema: email, accessLevel, integrationAccessLevel[], mcpServerAccessLevel[], accountMFARequired, accountSSORequired, allowToEditRetryData. Access settings apply uniformly to every email in the batch.
Examples
Corresponds to: POST /v1/invite/multiple (operationId: inviteUsers)
celigo workspace-users reinvite <id>
Re-send an invite to a user who dismissed theirs. Only works on users with dismissed: true; they return to a pending state afterward.
Signature
Arguments
<id>
string
Yes
The user's access-record (ashare) id, from workspace-users list.
Example
Corresponds to: PUT /v1/ashares/{_id}/reinvite (operationId: reinviteUser)
celigo workspace-users disable <userId>
Disable a user's account access without removing them; a non-destructive change that preserves history. No-op if the user is already disabled. Only works on accepted users. Prompts for confirmation unless -y is passed.
⚠️ Disabling a user revokes their access immediately. The user cannot sign in until you re-enable them with
celigo workspace-users enable <userId>. Their record and history are preserved.
Signature
Arguments
<userId>
string
Yes
Ashare ID.
Flags
-y, --yes
boolean
false
Skip the confirmation prompt.
Example
Corresponds to: PUT /v1/ashares/{_id}/disable (operationId: toggleUserDisabled)
celigo workspace-users enable <userId>
Re-enable a disabled user's account access. No-op if the user is already enabled. The non-destructive counterpart to disable.
Signature
Arguments
<userId>
string
Yes
Ashare ID.
Example
Corresponds to: PUT /v1/ashares/{_id}/disable (operationId: toggleUserDisabled)
Gotchas
Workspace users vs end users. This group manages account collaborators — people who sign in to integrator.io and hold an access level. External people who only authenticate through MCP OAuth to use your MCP servers are end-users, a separate resource with its own commands. Despite the shared word, the two do not overlap.
Access-level semantics (see user.yml schema for the definitive rules):
administrator— full account administration; can invite/manage users and edit every resource. Cannot transfer ownership.manage— can edit every integration and resource, but cannot edit account settings or invite users.monitor— read-only plus run/retry/resolve on flows. Cannot modify integrations, flows, connections, or account settings.Integration-only — omit
accessLevelentirely and populateintegrationAccessLevel[]. The user sees only the integrations you list.
accessLevelvsintegrationAccessLevelstrategy:Full account access → set
accessLeveltomanageoradministrator; leaveintegrationAccessLevelempty.Account-wide monitoring + selective management →
accessLevel: monitorplus per-integrationmanageentries.Integration-only access → omit
accessLevel; list the integrations inintegrationAccessLevel.
--mcp-serveroninviteis deprecated upstream. The API still accepts and returnsmcpServerAccessLevel, but new work should grant MCP access through end-user grants (end-users invite --grant,mcp-servers assign-end-users/assign-groups) instead.allowToEditRetryDataonly matters at monitor level. All monitors can view and retry errant records, but editing the retry payload requires this flag. It is silently ignored formanage/administrator.--force-ssorequires the account to have SSO configured. The invite will be accepted by the API but the user cannot sign in until SSO is live.Ashare ID ≠ user ID. The
_idfromworkspace-users listis the ashare (user-in-account) ID; the underlying user's own ID lives atsharedWithUser._id. All/v1/ashares/{_id}endpoints take the ashare ID.PUTis a full replace. Usesetor round-trip throughget | jq | updaterather than hand-writing an update body, or you will eraseintegrationAccessLevel, MFA flags, etc.disablevsdelete.disable(andenableto restore) is the non-destructive option (PUT /v1/ashares/{_id}/disable); it preserves the user's record and history.deleteremoves the ashare entirely. Reach fordisablewhen you may need to restore access later.disableonly works on users who have accepted their invite.reinviteonly works on dismissed invites. It targets users withdismissed: trueand returns them to a pending state. It is a no-op for users who already accepted.
Related
Last updated
Was this helpful?