Blue API를 사용하여 레코드에서 사용자 할당, 추가 또는 제거
레코드 담당자 관리
Blue API는 레코드 담당자를 관리하기 위한 세 가지 작업을 제공합니다: 담당자 설정(스마트 대체), 담당자 추가 및 담당자 제거. 이러한 작업은 활동 추적, 알림, 웹후크 및 실시간 업데이트를 자동으로 처리합니다.
레코드 담당자 설정 (스마트 할당)
현재의 모든 담당자를 새로운 목록으로 교체합니다. 시스템은 필요한 변경 사항을 지능적으로 계산하여 새로운 목록에 없는 사용자를 제거하고 새로운 사용자를 추가합니다.
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! | ✅ 예 | 사용자를 할당할 레코드의 ID |
assigneeIds |
[String!]! | ✅ 예 | 할당할 사용자 ID 배열(현재의 모든 담당자를 교체) |
AddTodoAssigneesInput
매개변수 | 유형 | 필수 | 설명 |
---|---|---|---|
todoId |
String! | ✅ 예 | 사용자를 할당할 레코드의 ID |
assigneeIds |
[String!]! | ✅ 예 | 추가할 사용자 ID 배열 |
RemoveTodoAssigneesInput
매개변수 | 유형 | 필수 | 설명 |
---|---|---|---|
todoId |
String! | ✅ 예 | 담당자를 제거할 레코드의 ID |
assigneeIds |
[String!]! | ✅ 예 | 담당자에서 제거할 사용자 ID 배열 |
응답 필드
필드 | 유형 | 설명 |
---|---|---|
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
}
}
이 쿼리는 레코드에 할당될 수 있는 모든 프로젝트 구성원을 반환합니다.