Skip to main content

User Management Operations

This section documents the GraphQL operations available for managing user accounts in the CRM system.

Queries​

users​

Retrieves a paginated list of users with filtering, sorting, and pagination capabilities.

Query​

query Users(
$limit: Int
$offset: Int
$order: OrderDirection
$orderBy: String
$filter: UsersFilterInput
) {
users(
limit: $limit
offset: $offset
order: $order
orderBy: $orderBy
filter: $filter
) {
data {
id
username
email
createdAt
updatedAt
avatar
phoneNumber
isEmailVerified
emailVerifiedAt
status
# Additional fields as needed
}
count
limit
offset
}
}

Arguments​

NameTypeDescriptionRequiredDefault
limitIntMaximum number of items to returnNo10
offsetIntNumber of items to skipNo0
orderOrderDirectionSort order (ASC/DESC)NoASC
orderByStringField to sort byNocreatedAt
filterUsersFilterInputFilter criteriaNo-

UsersFilterInput​

input UsersFilterInput {
query: String
email: String
# Additional filter fields
}

Response​

Returns a UsersPaginationBoResponse containing an array of UserBoModel instances and pagination metadata.

user​

Retrieves detailed information about a specific user by ID.

Query​

query User($id: ID!) {
user(id: $id) {
id
username
email
createdAt
updatedAt
avatar
phoneNumber
isEmailVerified
emailVerifiedAt
status
sessions {
all {
id
sessionId
deviceName
deviceType
browser
operatingSystem
ipAddress
country
region
city
isActive
createdAt
updatedAt
lastActiveAt
}
aggregatedInfo {
totalLogins
}
first {
id
createdAt
}
last {
id
createdAt
}
}
overlapIPUsers {
id
username
email
}
# Additional fields as needed
}
}

Arguments​

NameTypeDescriptionRequired
idID!ID of the user to retrieveYes

Response​

Returns a UserBoModel instance with detailed user information, including nested data like sessions and related users.

Mutations​

blockUsers​

Blocks multiple users by setting their status to BLOCKED.

Mutation​

mutation BlockUsers($ids: [ID!]!) {
blockUsers(ids: $ids)
}

Arguments​

NameTypeDescriptionRequired
ids[ID!]!Array of user IDs to blockYes

Response​

Returns a boolean indicating whether the operation was successful.

activeUsers​

Activates multiple users by setting their status to ACTIVE.

Mutation​

mutation ActiveUsers($ids: [ID!]!) {
activeUsers(ids: $ids)
}

Arguments​

NameTypeDescriptionRequired
ids[ID!]!Array of user IDs to activateYes

Response​

Returns a boolean indicating whether the operation was successful.

Error Handling​

Common Errors​

Error CodeDescriptionResolution
UNAUTHORIZEDUser is not authorized to perform the operationEnsure the user has the proper CRM role (BO)
RESOURCE_NOT_FOUNDUser with specified ID not foundVerify the user ID exists
INVALID_ARGUMENTSInvalid arguments providedCheck the provided arguments against the schema

Example Error Response​

{
"errors": [
{
"message": "User not found",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": ["user"],
"extensions": {
"code": "RESOURCE_NOT_FOUND"
}
}
],
"data": {
"user": null
}
}

Usage Examples​

Fetching Users with Pagination and Filtering​

const GET_USERS = gql`
query GetUsers($limit: Int, $offset: Int, $filter: UsersFilterInput) {
users(limit: $limit, offset: $offset, filter: $filter) {
data {
id
username
email
status
}
count
limit
offset
}
}
`;

// Example usage
const { data, loading, error } = useQuery(GET_USERS, {
variables: {
limit: 20,
offset: 0,
filter: { query: 'john' },
},
});

Blocking Users​

const BLOCK_USERS = gql`
mutation BlockUsers($ids: [ID!]!) {
blockUsers(ids: $ids)
}
`;

// Example usage
const [blockUsers] = useMutation(BLOCK_USERS);
blockUsers({ variables: { ids: ['user1', 'user2'] } });