Получение списков пользователей в компаниях или проектах с фильтрацией и пагинацией.


Список пользователей

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 полезен при создании интерфейсов выбора пользователей
  • Уровни доступа: Списки пользователей проекта включают информацию о ролях, недоступную в списках компаний

Связанные операции

AI Ассистент

Ответы генерируются с использованием ИИ и могут содержать ошибки.

Как я могу вам помочь?

Спросите меня о чем угодно, связанном с Blue или этой документацией.

Введите для отправки • Shift+Enter для новой строки • ⌘I для открытия