#Управление персоналом
Организационная структура портала Битрикс24: отделы и команды, их участники и сотрудники. Через API можно строить и менять дерево подразделений, управлять составом узлов и искать сотрудников — без обращения к интерфейсу портала.
Скоуп: humanresources | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key
#Разделы документации
- Узлы оргструктуры — создание, чтение, изменение, перечисление и поиск отделов и команд (5 эндпоинтов).
- Операции над узлами — дочерние узлы, счётчик, перемещение в дереве, средства коммуникации (5 эндпоинтов).
- Участники узлов — добавление, удаление, перемещение и полная замена состава с ролями (4 эндпоинта).
- Сотрудники — поиск по имени, подчинённые, количество, вхождение в несколько подразделений (4 эндпоинта).
#Что важно знать сразу
- Узел — это отдел или команда. Тип задаётся значением
type:DEPARTMENT(отдел) илиTEAM(команда). Параметрtypeобязателен при перечислении (список узлов) и при создании. - Удаление узлов через API не выполняется. В разделе нет эндпоинта удаления узла — дерево меняется созданием, изменением и перемещением узлов.
- Роли участников зависят от типа узла. Для отдела —
MEMBER_HEAD,MEMBER_DEPUTY_HEAD,MEMBER_EMPLOYEE. Для команды —MEMBER_TEAM_HEAD,MEMBER_TEAM_DEPUTY_HEAD,MEMBER_TEAM_EMPLOYEE. Полный перечень — в разделе Участники узлов. - Состав участников возвращается только при получении одного узла. Список узлов и поиск отдают сводные поля без участников — состав приходит в ответе получения узла.
- Перечисление узлов — только по типу. Сужение выдачи по произвольному полю узла не поддерживается. Для отбора по значениям полей с сортировкой используйте поиск узлов.
- Форма ответа зависит от эндпоинта. Перечисление узлов и поиск отдают массив в плоском
dataплюсmeta(total,hasMore). Дочерние узлы и поиск сотрудников вкладывают массив вdata.items. Счётчики и одиночные узлы возвращают объект вdata. Точная форма — в секции «Поля ответа» каждого эндпоинта.
#Полный пример
Сценарий на JavaScript: создать отдел, вложить в него подотдел, назначить руководителя, посмотреть дерево и перенести подотдел на верхний уровень.
const VIBE_KEY = process.env.VIBE_KEY
const BASE = 'https://vibecode.bitrix24.tech/v1'
async function api(method, path, body = null) {
const opts = { method, headers: { 'X-Api-Key': VIBE_KEY } }
if (body) {
opts.headers['Content-Type'] = 'application/json'
opts.body = JSON.stringify(body)
}
const res = await fetch(`${BASE}${path}`, opts)
if (!res.ok) throw new Error(`${method} ${path} → ${res.status}`)
return res.json()
}
// 1. Создать отдел на верхнем уровне
const { data: parent } = await api('POST', '/humanresources/nodes', {
type: 'DEPARTMENT',
name: 'Отдел разработки',
parentId: 1,
})
console.log(`Создан отдел: ${parent.id}`)
// 2. Создать подотдел внутри него
const { data: child } = await api('POST', '/humanresources/nodes', {
type: 'DEPARTMENT',
name: 'Группа тестирования',
parentId: parent.id,
})
// 3. Назначить руководителя отдела
await api('POST', `/humanresources/nodes/${parent.id}/members/add`, {
userIds: [42],
role: 'MEMBER_HEAD',
})
// 4. Посмотреть дочерние узлы отдела
const { data: children } = await api('GET', `/humanresources/nodes/${parent.id}/children`)
console.log(`Дочерних узлов: ${children.items.length}`)
// 5. Перенести подотдел на верхний уровень
await api('POST', `/humanresources/nodes/${child.id}/move`, { parentId: 1 })
console.log('Подотдел перенесён на верхний уровень')
#Справочник эндпоинтов
Все 18 эндпоинтов раздела. Ссылки ведут на страницы с параметрами, примерами и кодами ошибок.
Узлы оргструктуры:
| Метод | Путь | Bitrix24 метод | Описание |
|---|---|---|---|
| GET | `/v1/humanresources/nodes` | humanresources.node.list | Список узлов выбранного типа |
| GET | `/v1/humanresources/nodes/:id` | humanresources.node.get | Узел с составом участников |
| POST | `/v1/humanresources/nodes` | humanresources.node.add | Создать отдел или команду |
| PATCH | `/v1/humanresources/nodes/:id` | humanresources.node.edit | Изменить узел |
| POST | `/v1/humanresources/nodes/search` | humanresources.node.list | Поиск узлов с сортировкой |
Операции над узлами:
| Метод | Путь | Bitrix24 метод | Описание |
|---|---|---|---|
| GET | `/v1/humanresources/nodes/:id/children` | humanresources.node.children | Дочерние узлы |
| GET | `/v1/humanresources/nodes/count` | humanresources.node.count | Количество узлов по типам |
| POST | `/v1/humanresources/nodes/:id/move` | humanresources.node.move | Переместить узел в дереве |
| GET | `/v1/humanresources/nodes/:id/communications` | humanresources.node.communication.list | Средства коммуникации узла |
| PATCH | `/v1/humanresources/nodes/:id/communications` | humanresources.node.communication.edit | Настроить средства коммуникации |
Участники узлов:
| Метод | Путь | Bitrix24 метод | Описание |
|---|---|---|---|
| POST | `/v1/humanresources/nodes/:id/members/add` | humanresources.node.member.add | Добавить участников |
| POST | `/v1/humanresources/nodes/:id/members/remove` | humanresources.node.member.remove | Удалить участников |
| POST | `/v1/humanresources/nodes/:id/members/move` | humanresources.node.member.move | Переместить участников |
| POST | `/v1/humanresources/nodes/:id/members/set` | humanresources.node.member.set | Заменить состав |
Сотрудники:
| Метод | Путь | Bitrix24 метод | Описание |
|---|---|---|---|
| POST | `/v1/humanresources/employees/search` | humanresources.employee.search | Поиск сотрудников по имени |
| GET | `/v1/humanresources/employees/:id/subordinates` | humanresources.employee.subordinates | Подчинённые сотрудника |
| GET | `/v1/humanresources/employees/count` | humanresources.employee.count | Количество сотрудников |
| POST | `/v1/humanresources/employees/multidepartment` | humanresources.employee.multidepartment | Сотрудники из нескольких отделов |
#Коды ошибок
#Ошибки раздела
| Код | HTTP | Описание |
|---|---|---|
MISSING_REQUIRED_PARAMS |
400 | Не передан обязательный параметр type при перечислении узлов |
INVALID_PARAMS |
400 | Невалидный :id в ручных операциях (id must be a positive integer) или нарушена валидация тела запроса |
ENTITY_NOT_FOUND |
404 | Узел с указанным id не найден |
NOT_FOUND |
404 | Неизвестная операция участника в пути (допустимы add, remove, move, set) |
BITRIX_ERROR |
422 | Передан неподдерживаемый фильтр при перечислении узлов |
#Системные ошибки
| Код | HTTP | Описание |
|---|---|---|
SCOPE_DENIED |
403 | У ключа нет скоупа humanresources |
TOKEN_MISSING |
401 | У API-ключа не настроены токены Битрикс24 |
BITRIX_ACCESS_DENIED |
403 | Недостаточно прав на портале Битрикс24 |
BITRIX_UNAVAILABLE |
502 | Портал Битрикс24 недоступен |
Полный справочник общих ошибок — Ошибки.