Users
Manage the people working in your Flownally workspace.
7 generated endpoints in this resource group.
/usersGet users#
Returns people who can work in the current Flownally workspace.
Authorization
Scheme
- bearerAuth
Required scopes
- user:list
Allowed roles
- owner
- admin
- agent
List workspace users.
Responses
- Name
200- Type
- application/json
- Description
- List of users
- Name
default- Type
- application/json
- Description
- Error
Related schemas
Request
curl -X GET "https://api.flownally.com/v1/users" \
-H "Authorization: Bearer {token}"Response
{
"users": [
{
"id": "usr_d7phosq4g7mv2l5b9l40",
"name": "Lina Nowak",
"email": "lina@example.com",
"teamIds": [
"tem_d7pi77577990sq67vgqg"
],
"role": "admin",
"joinedAt": "2026-04-30T08:30:00Z",
"avatarUrl": "https://app.flownally.com/avatar/lina.png",
"provider": "google",
"emailVerified": true,
"disabled": false
}
]
}/users/meGet current user profile#
Returns the authenticated user's profile.
Authorization
Scheme
- bearerAuth
Required scopes
- user:read_self
Allowed roles
- owner
- admin
- agent
Read the caller's user record.
Responses
- Name
200- Type
- application/json
- Description
- Current user profile
- Name
default- Type
- application/json
- Description
- Error
Related schemas
Request
curl -X GET "https://api.flownally.com/v1/users/me" \
-H "Authorization: Bearer {token}"Response
{
"id": "usr_d7phosq4g7mv2l5b9l40",
"name": "Lina Nowak",
"email": "lina@example.com",
"teamIds": [
"tem_d7pi77577990sq67vgqg"
],
"role": "admin",
"joinedAt": "2026-04-30T08:30:00Z",
"avatarUrl": "https://app.flownally.com/avatar/lina.png",
"provider": "google",
"emailVerified": true,
"disabled": false
}/users/meUpdate current user profile#
Updates the authenticated user's name or avatar URL.
Authorization
Scheme
- bearerAuth
Required scopes
- user:update_self
Allowed roles
- owner
- admin
- agent
Update the caller's user profile.
Request body
Send a application/json body. The body is required for this operation.
Optional attributes
- Name
name- Type
- string
- Description
- Optional request attribute.
- Name
avatarUrl- Type
- string
- Description
- Optional request attribute.
Responses
- Name
200- Type
- application/json
- Description
- Updated user profile
- Name
default- Type
- application/json
- Description
- Error
Related schemas
Request
curl -X PATCH "https://api.flownally.com/v1/users/me" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "Lina Nowak",
"avatarUrl": "https://app.flownally.com/avatar/lina.png"
}'Response
{
"id": "usr_d7phosq4g7mv2l5b9l40",
"name": "Lina Nowak",
"email": "lina@example.com",
"teamIds": [
"tem_d7pi77577990sq67vgqg"
],
"role": "admin",
"joinedAt": "2026-04-30T08:30:00Z",
"avatarUrl": "https://app.flownally.com/avatar/lina.png",
"provider": "google",
"emailVerified": true,
"disabled": false
}/users/me/unread-summaryConversation unread state#
Returns the number of accessible conversations with unread activity for the authenticated user across all owners and statuses, and access-scoped unread flags for requested conversations.
Authorization
Scheme
- bearerAuth
Required scopes
- user:read_self
Allowed roles
- owner
- admin
- agent
Read the caller's unread conversation summary.
Optional parameters
- Name
skipTotal- Type
- query boolean
- Description
- Return requested flags only. When true, unread_conversations is zero and must be ignored. Defaults to false. Separate calls have independent snapshots; flags and a previously fetched total may differ.
- Name
conversationIds- Type
- query array<string>
- Description
- Optional parameter.
Responses
- Name
200- Type
- application/json
- Description
- Unread summary
- Name
default- Type
- application/json
- Description
- Error
Related schemas
Request
curl -G "https://api.flownally.com/v1/users/me/unread-summary" \
-H "Authorization: Bearer {token}" \
-d skipTotal="{skipTotal}" \
-d conversationIds="{conversationIds}"Response
{
"conversationUnread": {},
"unreadConversations": 0
}/users/{userId}Get user#
Returns one workspace member, including role and team membership.
Authorization
Scheme
- bearerAuth
Required scopes
- user:read
Allowed roles
- owner
- admin
- agent
Read a workspace user.
Required parameters
- Name
userId- Type
- path string
- Description
- Required parameter.
Responses
- Name
200- Type
- application/json
- Description
- User
- Name
404- Type
- application/json
- Description
- User not found
- Name
default- Type
- application/json
- Description
- Error
Related schemas
Request
curl -X GET "https://api.flownally.com/v1/users/{userId}" \
-H "Authorization: Bearer {token}"Response
{
"id": "usr_d7phosq4g7mv2l5b9l40",
"name": "Lina Nowak",
"email": "lina@example.com",
"teamIds": [
"tem_d7pi77577990sq67vgqg"
],
"role": "admin",
"joinedAt": "2026-04-30T08:30:00Z",
"avatarUrl": "https://app.flownally.com/avatar/lina.png",
"provider": "google",
"emailVerified": true,
"disabled": false
}/users/{userId}Remove member#
Removes a member from the active workspace roster. The user row is retained for historical actor references, active application sessions are revoked, and the member no longer appears in the workspace user roster.
Authorization
Scheme
- bearerAuth
Required scopes
- user:disable
Allowed roles
- owner
- admin
Remove a member from the workspace.
Required parameters
- Name
userId- Type
- path string
- Description
- Required parameter.
Responses
- Name
204- Description
- Member removed
- Name
400- Type
- application/json
- Description
- Invalid request. Codes: - `auth_member_self_removal_forbidden` — caller targeted themselves
- Name
403- Type
- application/json
- Description
- Caller lacks authority for this member removal. Codes: - `auth_authz_member_remove_denied` — matrix rejects the remove action - `auth_member_removal_forbidden` — caller cannot remove an Owner target
- Name
404- Type
- application/json
- Description
- Target user not found in the caller's tenant. Code: - `auth_user_not_found`
- Name
409- Type
- application/json
- Description
- Tenant invariant would be violated. Code: - `auth_user_last_owner_required` — removal would leave zero active Owners
- Name
default- Type
- application/json
- Description
- Error
Related schemas
Request
curl -X DELETE "https://api.flownally.com/v1/users/{userId}" \
-H "Authorization: Bearer {token}"Response
204 Member removed/users/{userId}/roleUpdate a member's role#
Changes the role of a tenant member. The caller must hold a role with authority over the requested role transition. Admins can shuffle members between admin and agent; only Owners can mint or demote Owners. A tenant must retain at least one Owner — demoting the last one is rejected.
Authorization
Scheme
- bearerAuth
Allowed roles
- owner
- admin
Assign a user role; required action depends on request body role.
Required parameters
- Name
userId- Type
- path string
- Description
- Required parameter.
Request body
Send a application/json body. The body is required for this operation.
Required attributes
- Name
role- Type
- enum
- Description
- The role to assign to the member.Allowed: owner, admin, agent
Responses
- Name
200- Type
- application/json
- Description
- Member updated
- Name
400- Type
- application/json
- Description
- Invalid request. Codes: - `auth_user_invalid_role` — role is not one of owner/admin/agent - `auth_user_self_role_change_forbidden` — caller targeted themselves
- Name
403- Type
- application/json
- Description
- Caller lacks authority for this role change. Codes: - `auth_authz_user_assign_role_denied` — matrix rejects the new role (e.g. Admin attempting Owner) - `auth_user_role_assignment_forbidden` — caller cannot edit an Owner target
- Name
404- Type
- application/json
- Description
- Target user not found in the caller's tenant. Code: - `auth_user_not_found`
- Name
409- Type
- application/json
- Description
- Tenant invariant would be violated. Code: - `auth_user_last_owner_required` — demotion would leave zero Owners
- Name
default- Type
- application/json
- Description
- Error
Related schemas
Request
curl -X PUT "https://api.flownally.com/v1/users/{userId}/role" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"role": "agent"
}'Response
{
"id": "usr_d7phosq4g7mv2l5b9l40",
"name": "Lina Nowak",
"email": "lina@example.com",
"teamIds": [
"tem_d7pi77577990sq67vgqg"
],
"role": "admin",
"joinedAt": "2026-04-30T08:30:00Z",
"avatarUrl": "https://app.flownally.com/avatar/lina.png",
"provider": "google",
"emailVerified": true,
"disabled": false
}