Назначайте, добавляйте или удаляйте пользователей из записей с помощью API Blue
Управление назначениями записей
API Blue предоставляет три операции для управления назначениями записей: установка назначений (умное замещение), добавление назначений и удаление назначений. Эти операции автоматически обрабатывают отслеживание активности, уведомления, вебхуки и обновления в реальном времени.
Установить назначенных пользователей (умное назначение)
Заменяет всех текущих назначенных пользователей новым списком. Система интеллектуально вычисляет, какие изменения необходимы, удаляя пользователей, которых нет в новом списке, и добавляя новых.
mutation SetRecordAssignees {
setTodoAssignees(input: {
todoId: "record_abc123"
assigneeIds: ["user_123", "user_456", "user_789"]
}) {
success
operationId
}
}
Добавить назначенных пользователей
Добавляет новых назначенных пользователей без удаления существующих. Будут добавлены только пользователи, которые еще не назначены.
mutation AddRecordAssignees {
addTodoAssignees(input: {
todoId: "record_abc123"
assigneeIds: ["user_999", "user_111"]
}) {
success
operationId
}
}
Удалить назначенных пользователей
Удаляет конкретных назначенных пользователей из записи.
mutation RemoveRecordAssignees {
removeTodoAssignees(input: {
todoId: "record_abc123"
assigneeIds: ["user_456"]
}) {
success
operationId
}
}
Входные параметры
SetTodoAssigneesInput
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
todoId |
String! | ✅ Да | Идентификатор записи, к которой нужно назначить пользователей |
assigneeIds |
[String!]! | ✅ Да | Массив идентификаторов пользователей для назначения (заменяет всех текущих назначенных) |
AddTodoAssigneesInput
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
todoId |
String! | ✅ Да | Идентификатор записи, к которой нужно назначить пользователей |
assigneeIds |
[String!]! | ✅ Да | Массив идентификаторов пользователей для добавления в качестве назначенных |
RemoveTodoAssigneesInput
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
todoId |
String! | ✅ Да | Идентификатор записи, из которой нужно удалить назначенных пользователей |
assigneeIds |
[String!]! | ✅ Да | Массив идентификаторов пользователей для удаления из назначенных |
Поля ответа
Поле | Тип | Описание |
---|---|---|
success |
Boolean! | Успешно ли завершена операция |
operationId |
String | Уникальный идентификатор для отслеживания этой операции |
Необходимые разрешения
Установить/Удалить назначенных пользователей
Роль | Может назначать/удалять |
---|---|
OWNER |
✅ Да |
ADMIN |
✅ Да |
MEMBER |
✅ Да |
CLIENT |
✅ Да |
VIEW_ONLY |
❌ Нет |
COMMENT_ONLY |
❌ Нет |
Добавить назначенных пользователей
Роль | Может добавлять назначенных пользователей |
---|---|
OWNER |
✅ Да |
ADMIN |
✅ Да |
MEMBER |
✅ Да |
CLIENT |
✅ Да |
VIEW_ONLY |
✅ Да |
COMMENT_ONLY |
✅ Да |
Ответы на ошибки
Запись не найдена
{
"errors": [{
"message": "Todo was not found.",
"extensions": {
"code": "TODO_NOT_FOUND"
}
}]
}
Недостаточно прав
{
"errors": [{
"message": "You don't have permission to modify this record",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
Неверный ввод
{
"errors": [{
"message": "Variable '$input' got invalid value; Expected non-nullable type 'String!' not to be null.",
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}]
}
Сравнение операций
Функция | Установить назначенных | Добавить назначенных | Удалить назначенных |
---|---|---|---|
Logic | Smart replacement | Incremental addition | Selective removal |
Activity Tracking | ✅ Да | ❌ Нет | ❌ Нет |
Уведомления | ✅ Да | ❌ Нет | ❌ Нет |
Webhooks | ✅ Да | ❌ Нет | ❌ Нет |
Automations | ✅ Да | ❌ Нет | ❌ Нет |
Permission Level | Stricter | More permissive | Stricter |
Бизнес-логика
Умное назначение (setTodoAssignees)
Когда вы используете setTodoAssignees
, система:
- Сравнивает списки: Анализирует текущих назначенных пользователей и новый список назначенных
- Вычисляет изменения: Определяет, кого удалить, кого оставить и кого добавить
- Удаляет пользователей: Снимает назначение с пользователей, которых нет в новом списке
- Добавляет пользователей: Назначает пользователей из нового списка, которые ранее не были назначены
- Отслеживает активность: Создает записи журнала активности для каждого изменения
- Отправляет уведомления: Уведомляет вновь назначенных пользователей
- Запускает вебхуки: Срабатывают вебхуки добавления/удаления назначенных
- Обновляет графики: Помечает аналитические графики для обновления
- Обновления в реальном времени: Публикует обновления для подключенных клиентов
Простые операции (добавление/удаление)
Операции addTodoAssignees
и removeTodoAssignees
предоставляют базовую функциональность без комплексного отслеживания и уведомлений, как в setTodoAssignees
.
Важные заметки
- Членство в проекте: Назначенные пользователи должны быть членами проекта, содержащего запись
- Нет ограничений на назначения: Нет максимального количества назначенных пользователей на запись
- Самоназначение: Пользователи могут назначать себя, если у них есть соответствующие разрешения
- Пустые массивы: Предоставление пустого
assigneeIds
массива вsetTodoAssignees
удаляет всех назначенных пользователей - Предотвращение дубликатов: Система автоматически предотвращает дублирование назначений
- Эффективность базы данных: Использует соединительную таблицу (
TodoUser
) для масштабируемых отношений многие-ко-многим - Обновления в реальном времени: Все подключенные клиенты получают немедленные обновления при изменении назначений
Получить доступных назначенных пользователей
Чтобы получить список пользователей, которые могут быть назначены на записи в проекте:
query GetAssignees {
assignees(projectId: "project_abc123") {
id
name
email
avatar
}
}
Этот запрос возвращает всех членов проекта, которые могут быть потенциально назначены на записи.
Связанные операции
- Список записей - Получить записи с их текущими назначенными пользователями
- Обновить запись - Изменить другие свойства записи
- Добавить комментарий - Добавить комментарии к назначенным записям