Получение списков пользователей в компаниях или проектах с фильтрацией и пагинацией.
Список пользователей
Blue предоставляет несколько запросов для получения списка пользователей на разных уровнях - по всей компании, по конкретному проекту или для поиска отдельного пользователя. Эти запросы поддерживают пагинацию, фильтрацию и сортировку для эффективного управления большими базами пользователей.
Простой пример - пользователи компании
Список всех пользователей в компании:
query ListCompanyUsers {
companyUserList(companyId: "acme-corp") {
users {
id
email
fullName
jobTitle
lastActiveAt
}
pageInfo {
totalItems
hasNextPage
}
}
}
Расширенный пример - отфильтрованные пользователи проекта
Список пользователей проекта с поиском и пагинацией:
query ListProjectUsers {
projectUserList(
projectId: "web-redesign"
search: "engineer"
first: 20
orderBy: lastActiveAt_DESC
) {
edges {
node {
id
email
fullName
accessLevel
customRole {
id
name
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
Доступные запросы
companyUserList
Список всех пользователей в компании с необязательной фильтрацией.
Входные параметры
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
companyId |
String! | ✅ Да | ID компании или слаг |
notInProjectId |
String | Нет | Исключить пользователей, уже находящихся в этом проекте |
search |
String | Нет | Поиск по имени или электронной почте |
first |
Int | Нет | Количество результатов для возврата (прямая пагинация) |
after |
String | Нет | Курсор для прямой пагинации |
last |
Int | Нет | Количество результатов для возврата (обратная пагинация) |
before |
String | Нет | Курсор для обратной пагинации |
skip |
Int | Нет | Количество результатов для пропуска |
orderBy |
UserOrderByInput | Нет | Порядок сортировки (см. ниже) |
projectUserList
Список всех пользователей в конкретном проекте.
Входные параметры
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
projectId |
String! | ✅ Да | ID проекта или слаг |
search |
String | Нет | Поиск по имени или электронной почте |
first |
Int | Нет | Количество результатов (макс: 200) |
after |
String | Нет | Курсор для пагинации |
orderBy |
UserOrderByInput | Нет | Порядок сортировки |
user
Получает одного пользователя по ID.
Входные параметры
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
id |
String! | ✅ Да | ID пользователя |
Опции сортировки
UserOrderByInput Значения
Значение | Описание |
---|---|
createdAt_ASC |
Сортировать по дате регистрации (от старых к новым) |
createdAt_DESC |
Сортировать по дате регистрации (от новых к старым) |
lastActiveAt_ASC |
Сортировать по последней активности (от старых к новым) |
lastActiveAt_DESC |
Сортировать по последней активности (от новых к старым) |
firstName_ASC |
Сортировать по имени (A-Z) |
firstName_DESC |
Сортировать по имени (Z-A) |
lastName_ASC |
Сортировать по фамилии (A-Z) |
lastName_DESC |
Сортировать по фамилии (Z-A) |
email_ASC |
Сортировать по адресу электронной почты (A-Z) |
email_DESC |
Сортировать по адресу электронной почты (Z-A) |
username_ASC |
Сортировать по имени пользователя (A-Z) |
username_DESC |
Сортировать по имени пользователя (Z-A) |
jobTitle_ASC |
Сортировать по должности (A-Z) |
jobTitle_DESC |
Сортировать по должности (Z-A) |
Поля ответа
Объект пользователя
Поле | Тип | Описание |
---|---|---|
id |
String! | Уникальный идентификатор пользователя |
uid |
String! | UID аутентификации Firebase |
username |
String! | Выбранное пользователем имя |
email |
String! | Адрес электронной почты (виден только ВЛАДЕЛЬЦУ/АДМИНУ) |
firstName |
String | Имя |
lastName |
String | Фамилия |
fullName |
String | Полное имя |
jobTitle |
String | Профессиональный титул |
phoneNumber |
String | Контактный номер |
dateOfBirth |
DateTime | Дата рождения |
isEmailVerified |
Boolean! | Статус проверки электронной почты |
lastActiveAt |
DateTime | Время последней активности |
createdAt |
DateTime! | Дата создания аккаунта |
updatedAt |
DateTime! | Дата последнего обновления профиля |
isOnline |
Boolean! | Текущий онлайн статус |
timezone |
String | Часовой пояс пользователя |
locale |
String | Предпочтения языка |
theme |
JSON | Предпочтения темы интерфейса |
image |
Image | Объект изображения профиля |
Дополнительные поля пользователя проекта
При перечислении пользователей проекта доступны дополнительные поля:
Поле | Тип | Описание |
---|---|---|
accessLevel |
UserAccessLevel! | Роль пользователя в проекте |
customRole |
ProjectUserRole | Подробности о пользовательской роли, если применимо |
joinedAt |
DateTime! | Когда пользователь присоединился к проекту |
Информация о пагинации
Поле | Тип | Описание |
---|---|---|
totalItems |
Int! | Общее количество пользователей |
totalPages |
Int | Общее количество страниц (для смещения пагинации) |
page |
Int | Номер текущей страницы |
perPage |
Int | Элементы на странице |
hasNextPage |
Boolean! | Доступно больше результатов |
hasPreviousPage |
Boolean! | Доступны предыдущие результаты |
startCursor |
String | Курсор первого элемента |
endCursor |
String | Курсор последнего элемента |
Необходимые разрешения
Запрос | Необходимое разрешение |
---|---|
companyUserList |
Any authenticated user in the company |
projectUserList |
Any project member (including VIEW_ONLY) |
user |
Any authenticated user |
Ответы об ошибках
Компания не найдена
{
"errors": [{
"message": "Company not found",
"extensions": {
"code": "COMPANY_NOT_FOUND"
}
}]
}
Проект не найден
{
"errors": [{
"message": "Project not found",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Неавторизованный доступ
{
"errors": [{
"message": "You don't have access to this resource",
"extensions": {
"code": "UNAUTHORIZED"
}
}]
}
Важные заметки
- Производительность: Используйте пагинацию для больших списков пользователей (макс. 200 пользователей на запрос)
- Поиск: Поиск по имени, фамилии и полям электронной почты
- Конфиденциальность электронной почты: Адреса электронной почты видны только пользователям с уровнями доступа ВЛАДЕЛЕЦ или АДМИН
- Статус онлайн:
isOnline
обновляется в реальном времени через соединения WebSocket - Изображения профиля: Используйте поле
image.variants
для различных размеров - Фильтрация: Параметр
notInProjectId
полезен при создании интерфейсов выбора пользователей - Уровни доступа: Списки пользователей проекта включают информацию о ролях, недоступную в списках компаний
Связанные операции
- Обзор управления пользователями - Операции управления пользователями
- Удалить пользователя - Удаление пользователей из проектов
- Пользовательские роли - Управление разрешениями пользователей