Users
Manage user access to a Celigo account. Each record represents a user's access grant, including their access level and invitation status.
Access is controlled at two levels:
accessLevel — account-wide role (administrator, manage, monitor, etc.)
integrationAccessLevel — per-integration overrides for finer control.
The account owner is not included — only invited users appear. Users can be disabled (reversible) or permanently removed.
User schema
Returns all users with access to the account. The account owner is not included — only invited users appear.
Filter by access-record type. workspace returns the same records as
an unfiltered call; end-user always returns 204 because end users
are served by the End Users API, not this endpoint.
All users with access to the account.
A user's access record in the account. Each user who has been invited
(or shared access) gets one record per account they belong to. The
_id is the access-record id, not the user's own id — the user's
identity is in sharedWithUser._id. The account owner does not
appear in this list.
Set to False to enable a disabled user, or True to maintain disabled
Account-level access for the user.
CRITICAL: This controls account-wide access. Choose your strategy:
- Integration-only access: omit
accessLeveland specify integrations inintegrationAccessLevel - Account-wide monitoring + selective management: set
accessLevel: monitorand useintegrationAccessLevelto grantmanageaccess for specific integrations - Full account access: set
accessLevel: manageoraccessLevel: administratorand leaveintegrationAccessLevelundefined/empty
If per-integration level permissions are needed, omit accessLevel and instead populate integrationAccessLevel.
When true, SSO is required for this user in this account.
When true, MFA is required for this user in this account.
When true, the user can access API Management (APIM) features for this account.
When true, the user can edit retry data when troubleshooting flow run errors (Error Management).
All users with Monitor access can view, retry, and resolve errant records. This flag controls whether they can also edit the retry data payload. If set to false, the user cannot edit retry data for flow runs in any integration workspace where they only have Monitor access.
This setting only applies when:
accessLevelismonitor, or- an entry in
integrationAccessLevelgrantsmonitoraccess for a specific integration.
When true, the user can create integration workspaces.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cWhen true, the user has accepted the invitation to join the account.
Discriminates workspace users from end users on the underlying
access-record model. This endpoint only returns workspace
records — end users are managed through the End Users API.
When the user last signed in to this account.
2026-05-02T17:02:59.370ZWhen true, the invitation has been declined by the user.
When true, the user has production-admin privileges in this account.
How this user's access record was created.
When true, the user must complete SSO setup for this account
before their SSO-required access is fully active. Set by the
server during SSO enrollment; cleared by removing the field, so
it is never false.
Timestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZNo users exist in the account
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/ashares HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6798f4dc43db9184f4bc8ee0",
"accepted": true,
"userType": "workspace",
"accessLevel": "administrator",
"integrationAccessLevel": [],
"accountSSORequired": false,
"accountMFARequired": false,
"isProductionAdmin": true,
"allowIntegrationWorkspaceCreation": false,
"createdVia": "existing_account_invite",
"lastModified": "2026-05-02T17:02:59.371Z",
"createdAt": "2025-01-28T15:16:44.327Z",
"lastSignIn": "2026-05-02T17:02:59.370Z",
"sharedWithUser": {
"_id": "624774a6a7574d3ed9f9a5cc",
"email": "admin@example.com",
"name": "Account Admin",
"allowedToResetMFA": false,
"accountSSOLinked": "not_linked"
}
},
{
"_id": "690954729ef09ab572f65e5d",
"accepted": true,
"userType": "workspace",
"integrationAccessLevel": [
{
"_integrationId": "68f52162f00a35a1b26eaafb",
"accessLevel": "manage"
},
{
"_integrationId": "6842261335b64c0bcb308e4f",
"accessLevel": "monitor"
}
],
"accountSSORequired": false,
"accountMFARequired": false,
"allowIntegrationWorkspaceCreation": false,
"createdVia": "existing_account_invite",
"lastModified": "2026-04-09T18:48:15.653Z",
"createdAt": "2025-11-04T01:18:42.025Z",
"sharedWithUser": {
"_id": "69095422a6fa76e8c7c170eb",
"email": "contributor@example.com",
"name": "Integration User",
"allowedToResetMFA": false,
"accountSSOLinked": "not_linked"
}
}
]Retrieve a single user's access record by its id.
User access-record id.
The user record.
A user's access record in the account. Each user who has been invited
(or shared access) gets one record per account they belong to. The
_id is the access-record id, not the user's own id — the user's
identity is in sharedWithUser._id. The account owner does not
appear in this list.
Set to False to enable a disabled user, or True to maintain disabled
Account-level access for the user.
CRITICAL: This controls account-wide access. Choose your strategy:
- Integration-only access: omit
accessLeveland specify integrations inintegrationAccessLevel - Account-wide monitoring + selective management: set
accessLevel: monitorand useintegrationAccessLevelto grantmanageaccess for specific integrations - Full account access: set
accessLevel: manageoraccessLevel: administratorand leaveintegrationAccessLevelundefined/empty
If per-integration level permissions are needed, omit accessLevel and instead populate integrationAccessLevel.
When true, SSO is required for this user in this account.
When true, MFA is required for this user in this account.
When true, the user can access API Management (APIM) features for this account.
When true, the user can edit retry data when troubleshooting flow run errors (Error Management).
All users with Monitor access can view, retry, and resolve errant records. This flag controls whether they can also edit the retry data payload. If set to false, the user cannot edit retry data for flow runs in any integration workspace where they only have Monitor access.
This setting only applies when:
accessLevelismonitor, or- an entry in
integrationAccessLevelgrantsmonitoraccess for a specific integration.
When true, the user can create integration workspaces.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cWhen true, the user has accepted the invitation to join the account.
Discriminates workspace users from end users on the underlying
access-record model. This endpoint only returns workspace
records — end users are managed through the End Users API.
When the user last signed in to this account.
2026-05-02T17:02:59.370ZWhen true, the invitation has been declined by the user.
When true, the user has production-admin privileges in this account.
How this user's access record was created.
When true, the user must complete SSO setup for this account
before their SSO-required access is fully active. Set by the
server during SSO enrollment; cleared by removing the field, so
it is never false.
Timestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/ashares/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "6798f4dc43db9184f4bc8ee0",
"accepted": true,
"accessLevel": "administrator",
"integrationAccessLevel": [],
"accountSSORequired": false,
"accountMFARequired": false,
"isProductionAdmin": true,
"allowIntegrationWorkspaceCreation": false,
"createdVia": "existing_account_invite",
"lastModified": "2026-05-02T17:02:59.371Z",
"createdAt": "2025-01-28T15:16:44.327Z",
"lastSignIn": "2026-05-02T17:02:59.370Z",
"sharedWithUser": {
"_id": "624774a6a7574d3ed9f9a5cc",
"email": "admin@example.com",
"name": "Account Admin",
"allowedToResetMFA": false,
"accountSSOLinked": "not_linked"
}
}Update a user's access level, integration permissions, or account settings. The user's email cannot be changed after invite. To disable a user without deleting, use PUT /v1/ashares/{_id}/disable instead.
User access-record id.
Writable fields shared by the request and response schemas.
Set to False to enable a disabled user, or True to maintain disabled
Account-level access for the user.
CRITICAL: This controls account-wide access. Choose your strategy:
- Integration-only access: omit
accessLeveland specify integrations inintegrationAccessLevel - Account-wide monitoring + selective management: set
accessLevel: monitorand useintegrationAccessLevelto grantmanageaccess for specific integrations - Full account access: set
accessLevel: manageoraccessLevel: administratorand leaveintegrationAccessLevelundefined/empty
If per-integration level permissions are needed, omit accessLevel and instead populate integrationAccessLevel.
When true, SSO is required for this user in this account.
When true, MFA is required for this user in this account.
When true, the user can access API Management (APIM) features for this account.
When true, the user can edit retry data when troubleshooting flow run errors (Error Management).
All users with Monitor access can view, retry, and resolve errant records. This flag controls whether they can also edit the retry data payload. If set to false, the user cannot edit retry data for flow runs in any integration workspace where they only have Monitor access.
This setting only applies when:
accessLevelismonitor, or- an entry in
integrationAccessLevelgrantsmonitoraccess for a specific integration.
When true, the user can create integration workspaces.
User updated.
No content
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/ashares/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 31
{
"accessLevel": "administrator"
}No content
Remove a user from the current account. This is irreversible — for a reversible alternative, use PUT /v1/ashares/{_id}/disable. Works on both accepted and pending invites.
User access-record id.
User removed from the account.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
DELETE /v1/ashares/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Toggles the disabled flag on a user's access record. Call again to re-enable — there is no separate /enable path. Only works on users with accepted: true.
The ashare record _id from GET /v1/ashares — despite the
parameter name, this is NOT sharedWithUser._id.
Empty body — the target is identified by the path parameter alone.
User access toggled.
No content
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
User not found.
PUT /v1/ashares/{_userId}/disable HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}No content
Re-sends the invitation to a user who previously dismissed it. Only works on users with dismissed: true in the user record. After reinviting, the user returns to a pending state awaiting acceptance.
User access-record id.
Empty body.
Reinvitation sent.
No content
User has not dismissed the invite.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/ashares/{_id}/reinvite HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}No content
Invite one or more users by email. Each entry in the response array corresponds to the email at the same index — check statusCode per entry for partial failures.
Fields that can be sent when inviting or updating an account user.
Set to False to enable a disabled user, or True to maintain disabled
Account-level access for the user.
CRITICAL: This controls account-wide access. Choose your strategy:
- Integration-only access: omit
accessLeveland specify integrations inintegrationAccessLevel - Account-wide monitoring + selective management: set
accessLevel: monitorand useintegrationAccessLevelto grantmanageaccess for specific integrations - Full account access: set
accessLevel: manageoraccessLevel: administratorand leaveintegrationAccessLevelundefined/empty
If per-integration level permissions are needed, omit accessLevel and instead populate integrationAccessLevel.
When true, SSO is required for this user in this account.
When true, MFA is required for this user in this account.
When true, the user can access API Management (APIM) features for this account.
When true, the user can edit retry data when troubleshooting flow run errors (Error Management).
All users with Monitor access can view, retry, and resolve errant records. This flag controls whether they can also edit the retry data payload. If set to false, the user cannot edit retry data for flow runs in any integration workspace where they only have Monitor access.
This setting only applies when:
accessLevelismonitor, or- an entry in
integrationAccessLevelgrantsmonitoraccess for a specific integration.
When true, the user can create integration workspaces.
Single email address to invite (use with POST /v1/invite).
newuser@example.comEmail addresses to invite (use with POST /v1/invite/multiple).
Array of results, one per email.
Per-entry result code. 201 on success, 400 if
the user already has access (use PUT /v1/ashares/{_id}
to update permissions instead).
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
POST /v1/invite/multiple HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 76
{
"emails": [
"user1@example.com",
"user2@example.com"
],
"accessLevel": "monitor"
}[
{
"statusCode": 201,
"doc": {
"_id": "6a02b1869a09438890230ae2",
"accessLevel": "monitor",
"integrationAccessLevel": [],
"lastModified": "2026-05-12T04:50:14.342Z",
"createdAt": "2026-05-12T04:50:14.330Z",
"allowIntegrationWorkspaceCreation": false,
"createdVia": "existing_account_invite",
"sharedWithUser": {
"_id": "6a02b1859a09438890230a9f",
"email": "user1@example.com"
}
}
},
{
"statusCode": 201,
"doc": {
"_id": "6a02b1869a09438890230aef",
"accessLevel": "monitor",
"integrationAccessLevel": [],
"lastModified": "2026-05-12T04:50:14.355Z",
"createdAt": "2026-05-12T04:50:14.345Z",
"allowIntegrationWorkspaceCreation": false,
"createdVia": "existing_account_invite",
"sharedWithUser": {
"_id": "6a02b1859a09438890230aab",
"email": "user2@example.com"
}
}
}
]Last updated
Was this helpful?