npx skills add ...
npx skills add celigo/ai --skill managing-users
Manage Celigo account users -- inviting users, updating permissions, configuring access levels (administrator, manage, monitor, integration-only), enforcing MFA/SSO, and disabling accounts. Use when adding team members, changing permissions, auditing access, or managing user lifecycle.
npx skills add celigo/ai --skill managing-users
A user (internally called an "ashare") represents a person's access grant to a Celigo account, defining what they can see and do. Concerns when managing users:
Users are an account administration concern, not a flow or integration resource.
There are four strategies for granting access. Choose based on the principle of least privilege.
Full account administration. Can edit all resources, manage users, and change account settings. Cannot transfer ownership or manage owner permissions.
Can edit all integrations and resources. Cannot view or edit account settings, invite users, or manage other users.
Read-only plus operational access. Can view all integrations, run flows, and troubleshoot errors (retry/resolve). Cannot modify configurations, enable/disable flows, or view connections and API tokens. Optionally grant allowToEditRetryData so monitor users can edit retry payloads.
No account-wide accessLevel. Access is granted per-integration via integrationAccessLevel[], each entry specifying an integration ID and either monitor or manage. The user sees only the integrations they are granted.
A common hybrid pattern: set accessLevel: monitor for baseline read-only access across all integrations, then use integrationAccessLevel to grant manage for specific integrations the user owns.
A user's effective permissions are the union of both fields. On any integration granted by both, the higher level wins (manage over monitor). Account-wide accessLevel also covers every integration created later, whereas integrationAccessLevel[] applies only to the integrations explicitly listed and must be extended by hand as new integrations are added. In the UI these composed shapes surface as Monitor all (account-wide monitor), Manage all (account-wide manage), and Custom (per-integration only).
The same two levels apply at both the account-wide and per-integration scopes. On the integrations each covers:
allowToEditRetryData to allow it), cannot modify resource definitions, cannot enable/disable flows, and cannot change settings.| User needs to... | Strategy | accessLevel | integrationAccessLevel |
|---|---|---|---|
| Administer the account, manage users | Administrator | administrator | omit |
| Edit all integrations, no account admin | Manage | manage | omit |
| View all, run/retry flows, no edits | Monitor | monitor | omit |
| View all + manage specific integrations | Monitor + selective manage | monitor | [{_integrationId, accessLevel: "manage"}] |
| Access only specific integrations | Integration-only | omit | [{_integrationId, accessLevel}] |
Inviting a user requires at minimum:
email -- the user's email address (the only required field)accessLevel or integrationAccessLevel (technically optional; omitting both creates a user with no access)All schemas are in references/schemas/:
POST /v1/invite bodyPUT /v1/ashares/{id} body (accessLevel, integrationAccessLevel, MFA/SSO, feature flags)accepted, dismissed, lastSignIn, sharedWithUser embedded objectallowAccessToAPIM flagBefore inviting or changing permissions, understand the current state:
Review accessLevel, integrationAccessLevel, accepted (pending invitations), and disabled status.
Use the Access Strategy Decision Matrix to determine the right level. Key considerations:
Use the invite command (there is no users create -- invitations are the only way to add users):
Use set for simple field changes or update for full replacement:
Disabling is preferred over deleting when you may need to restore access later.
Separate from inviting people, an account can let Celigo's own support staff sign in to troubleshoot. This appears on the Users page as a single built-in Celigo Support row (support_access@celigo.com), disabled by default, that an administrator enables like a toggle.
It is a distinct resource from a user: under the hood it is a support share, not an ashare, and there is exactly one per account (no per-person records) at a fixed, id-less endpoint. It is never invited or listed alongside the other users; instead an administrator operates the single grant directly:
Its access model is identical to a user: compose accessLevel and integrationAccessLevel with the same shapes (account-wide, integration-only/Custom, or account-wide monitor + selective manage), and allowToEditRetryData behaves the same way.
The one real difference is that expiry is mandatory. Support access carries a disableAfter timestamp and auto-revokes when it passes; the Celigo UI recommends roughly 5 days. There is no default, so a duration must be set explicitly, and it can be revoked early at any time.
Two account/user controls are easy to confuse with enabling support access itself:
allowAllToInviteSupport -- an account-level setting controlling whether non-administrators may enable support access at all.users create command. Use celigo users invite -- the API endpoint is POST /v1/invite, not POST /v1/ashares. The invite sends an email; the user appears with accepted: false until they accept.set command handles this automatically for simple field changes. For integrationAccessLevel array changes, use the GET-modify-PUT pattern with update.accessLevel and integrationAccessLevel creates a useless invite. The user will be in the account but have no access to anything. Always specify at least one.integrationAccessLevel is ignored when accessLevel is manage or administrator. These levels already grant full access to all integrations. Only use integrationAccessLevel with accessLevel: monitor or with no accessLevel.accepted: false) count toward the account's user limit. Delete stale invitations to free slots.disabled: true blocks access but keeps the record. The user cannot sign in or use the API. Use this instead of delete when you may need to restore access. Setting disabled: false re-enables the user.accountMFARequired and accountSSORequired on the user record control enforcement for that user in this specific account. SSO requires the account to have SSO configured first.ashares, not users. The CLI maps celigo users to /v1/ashares. If scripting against the API directly, use the ashares endpoint.celigo users list and cannot be invited or fetched by id -- it is a single per-account support grant that auto-revokes at its mandatory disableAfter expiry. See Celigo Support Access.| Error | Likely Cause | Fix |
|---|---|---|
409 Conflict on invite | User already has access to the account | Use users list to find the existing user record; update permissions with set or update |
403 Forbidden on invite or update | Current token does not have administrator access | Use a token from an administrator or owner account |
404 Not Found on user get/update | Wrong user ID, or user was deleted | Verify ID with users list |
422 Validation Error on invite | Missing email, invalid access level, or malformed integrationAccessLevel | Check email is present and accessLevel is one of: monitor, manage, administrator |
| User cannot see integrations | integrationAccessLevel entries reference wrong integration IDs | Verify integration IDs with celigo integrations list; update the user's access |
| User invited but cannot sign in | Invitation not accepted, or disabled: true | Check accepted field; resend invite or set disabled=false |
# Account-wide access
celigo users invite --email user@example.com --access-level monitor
# Integration-only access
celigo users invite --email user@example.com --integration <intId1>=manage --integration <intId2>=monitor
# Monitor baseline + manage for specific integrations
celigo users invite --email user@example.com --access-level monitor --integration <intId>=manage
# With security enforcement
celigo users invite --email user@example.com --access-level manage --force-mfa
celigo users invite --email user@example.com --access-level manage --force-sso# Change access level
celigo users set <id> accessLevel=manage
# Enable MFA requirement
celigo users set <id> accountMFARequired=true
# Grant APIM access
celigo users set <id> allowAccessToAPIM=true
# Allow monitor user to edit retry data
celigo users set <id> allowToEditRetryData=true
# Full update (GET + modify + PUT for complex changes like integrationAccessLevel)
celigo users get <id> > user.json
# Edit user.json to add/modify integrationAccessLevel array
celigo users update <id> < user.json# Disable a user (preserves record, blocks access)
celigo users set <id> disabled=true
# Re-enable a disabled user
celigo users set <id> disabled=false
# Permanently remove a user from the account
celigo users delete <id># CRUD (no "create" -- use "invite" instead)
celigo users list
celigo users get <id>
celigo users update <id> < user.json
celigo users set <id> key=value [key2=value2 ...]
celigo users delete <id>
# Invite
celigo users invite --email <email> [--access-level <level>] [--integration <id>=<level> ...]
[--force-mfa] [--force-sso] [--allow-edit-retry-data]
# Account context
celigo profile whoami # Resolve the active token to its user (returns v1/tokenInfo)