humanresources.node.add
Создать отдел
Описание
Метод относится к REST 3.0. Особенности вызова и формат ответа новой версии API описаны в обзоре REST 3.0.
Метод humanresources.node.add создает новый отдел или команду.
Параметры
type
string
обязательный
Тип создаваемого элемента структуры.
Возможные значения:
DEPARTMENT— отделTEAM— команда
name
string
обязательный
Название отдела или команды
parentId
integer
обязательный
Идентификатор родительского отдела или команды.
Идентификатор можно получить методом humanresources.node.list
description
string
необязательный
Описание отдела или команды
colorName
string
необязательный
Цвет команды.
Возможные значения:
blue— синийgreen— зеленыйcyan— голубойorange— оранжевыйpurple— фиолетовыйpink— розовый
userIds
object
необязательный
Пользователи, которых нужно добавить в отдел или команду. Описание структуры объекта
Идентификаторы пользователей можно получить методом user.get
moveUsersToNode
boolean
необязательный
Определяет, нужно ли переводить пользователей из userIds в новый отдел.
Возможные значения:
true— пользователи перестают числиться в прежнем отделе и переходят в новый отделfalse— пользователи только добавляются в новый отдел
По умолчанию: false
Используйте, если type равно DEPARTMENT
createChat
boolean
необязательный
Определяет, нужно ли создать новый чат для отдела.
Возможные значения:
true— создать чатfalse— не создавать чат
По умолчанию: false
bindingChatIds
array
необязательный
Массив идентификаторов существующих чатов, которые нужно привязать к отделу.
Идентификаторы чатов можно получить методом im.recent.list
createChannel
boolean
необязательный
Определяет, нужно ли создать новый канал для отдела.
Возможные значения:
true— создать каналfalse— не создавать канал
По умолчанию: false
bindingChannelIds
array
необязательный
Массив идентификаторов существующих каналов, которые нужно привязать к отделу.
Идентификаторы каналов можно получить методом im.recent.list
createCollab
boolean
необязательный
Определяет, нужно ли создать новый коллаб для отдела, если коллабы доступны в тарифе.
Возможные значения:
true— создать коллабfalse— не создавать коллаб
По умолчанию: false
bindingCollabIds
array
необязательный
Массив идентификаторов существующих коллабов, которые нужно привязать к отделу.
Идентификаторы коллабов можно получить методом socialnetwork.api.workgroup.list
settings
object
необязательный
Дополнительные настройки отдела или команды. Описание структуры объекта
Параметр userIds
MEMBER_HEAD
array
необязательный
Идентификаторы руководителей отдела
MEMBER_DEPUTY_HEAD
array
необязательный
Идентификаторы заместителей руководителя отдела
MEMBER_EMPLOYEE
array
необязательный
Идентификаторы сотрудников отдела
MEMBER_TEAM_HEAD
array
необязательный
Идентификаторы руководителей команды
MEMBER_TEAM_DEPUTY_HEAD
array
необязательный
Идентификаторы заместителей руководителя команды
MEMBER_TEAM_EMPLOYEE
array
необязательный
Идентификаторы участников команды
Параметр settings
BUSINESS_PROC_AUTHORITY
array
необязательный
Роли, которым разрешено работать с бизнес-процессами отдела или команды.
Возможные значения:
HEAD— руководитель отделаDEPUTY_HEAD— заместитель руководителя отделаALL_DEPARTMENT_HEADS— все руководители отделовEMPLOYEE— сотрудник отделаTEAM_HEAD— руководитель командыTEAM_DEPUTY— заместитель руководителя командыTEAM_EMPLOYEE— участник команды
REPORTS_AUTHORITY
array
необязательный
Роли, которым разрешено работать с отчетами отдела или команды.
Возможные значения:
HEAD— руководитель отделаDEPUTY_HEAD— заместитель руководителя отделаALL_DEPARTMENT_HEADS— все руководители отделовEMPLOYEE— сотрудник отделаTEAM_HEAD— руководитель командыTEAM_DEPUTY— заместитель руководителя командыTEAM_EMPLOYEE— участник команды
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"type":"DEPARTMENT","name":"Отдел маркетинга","parentId":1,"description":"Отвечает за продвижение","userIds":{"MEMBER_HEAD":[7],"MEMBER_EMPLOYEE":[12,15]},"moveUsersToNode":true,"createChat":true,"bindingChatIds":[31],"createChannel":false,"createCollab":false,"settings":{"BUSINESS_PROC_AUTHORITY":["HEAD","DEPUTY_HEAD"],"REPORTS_AUTHORITY":["HEAD"]}}' \
https://**put_your_bitrix24_address**/rest/api/**put_your_user_id_here**/**put_your_webhook_here**/humanresources.node.add
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"type":"DEPARTMENT","name":"Отдел маркетинга","parentId":1,"description":"Отвечает за продвижение","userIds":{"MEMBER_HEAD":[7],"MEMBER_EMPLOYEE":[12,15]},"moveUsersToNode":true,"createChat":true,"bindingChatIds":[31],"createChannel":false,"createCollab":false,"settings":{"BUSINESS_PROC_AUTHORITY":["HEAD","DEPUTY_HEAD"],"REPORTS_AUTHORITY":["HEAD"]},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/api/humanresources.node.add
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type NodeAddResult = {
id: number
name: string
type: string
structureId: number
parentId: number
description: string | null
accessCode: string
userCount: number
colorName: string | null
xmlId: string | null
createdAt: ISODate
updatedAt: ISODate
members: Array<{
userId: number
name: string
workPosition: string
role: string
avatar: string | null
url: string
}>
}
try {
const response = await $b24.actions.v3.call.make<NodeAddResult>({
method: 'humanresources.node.add',
params: {
type: 'DEPARTMENT',
name: 'Marketing department',
parentId: 1,
description: 'Handles promotion',
userIds: {
MEMBER_HEAD: [7],
MEMBER_EMPLOYEE: [12, 15],
},
moveUsersToNode: true,
createChat: true,
bindingChatIds: [31],
settings: {
BUSINESS_PROC_AUTHORITY: ['HEAD', 'DEPUTY_HEAD'],
REPORTS_AUTHORITY: ['HEAD'],
},
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Node created:', result.id, result.name, result.type)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function addNode() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v3.call.make({
method: 'humanresources.node.add',
params: {
type: 'DEPARTMENT',
name: 'Marketing department',
parentId: 1,
description: 'Handles promotion',
userIds: {
MEMBER_HEAD: [7],
MEMBER_EMPLOYEE: [12, 15],
},
moveUsersToNode: true,
createChat: true,
bindingChatIds: [31],
settings: {
BUSINESS_PROC_AUTHORITY: ['HEAD', 'DEPUTY_HEAD'],
REPORTS_AUTHORITY: ['HEAD'],
},
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Node created:', result.id, result.name, result.type)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addNode)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
user_ids = {
"MEMBER_HEAD": [
7,
],
"MEMBER_EMPLOYEE": [
12,
15,
],
}
settings = {
"BUSINESS_PROC_AUTHORITY": [
"HEAD",
"DEPUTY_HEAD",
],
"REPORTS_AUTHORITY": [
"HEAD",
],
}
try:
bitrix_response = client.humanresources.node.add(
type='DEPARTMENT',
name='Отдел маркетинга',
parent_id=1,
description='Отвечает за продвижение',
user_ids=user_ids,
move_users_to_node=True,
create_chat=True,
binding_chat_ids=[
31,
],
create_channel=False,
create_collab=False,
settings=settings,
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'humanresources.node.add',
[
'type' => 'DEPARTMENT',
'name' => 'Отдел маркетинга',
'parentId' => 1,
'description' => 'Отвечает за продвижение',
'userIds' => [
'MEMBER_HEAD' => [7],
'MEMBER_EMPLOYEE' => [12, 15],
],
'moveUsersToNode' => true,
'createChat' => true,
'bindingChatIds' => [31],
'settings' => [
'BUSINESS_PROC_AUTHORITY' => ['HEAD', 'DEPUTY_HEAD'],
'REPORTS_AUTHORITY' => ['HEAD'],
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error creating department: ' . $e->getMessage();
}
BX24.callMethod(
'humanresources.node.add',
{
type: 'DEPARTMENT',
name: 'Отдел маркетинга',
parentId: 1,
description: 'Отвечает за продвижение',
userIds: {
MEMBER_HEAD: [7],
MEMBER_EMPLOYEE: [12, 15]
},
moveUsersToNode: true,
createChat: true,
bindingChatIds: [31],
settings: {
BUSINESS_PROC_AUTHORITY: ['HEAD', 'DEPUTY_HEAD'],
REPORTS_AUTHORITY: ['HEAD']
}
},
function(result){
console.info(result.data());
console.log(result);
}
);
require_once('crest.php');
$result = CRest::call(
'humanresources.node.add',
[
'type' => 'DEPARTMENT',
'name' => 'Отдел маркетинга',
'parentId' => 1,
'description' => 'Отвечает за продвижение',
'userIds' => [
'MEMBER_HEAD' => [7],
'MEMBER_EMPLOYEE' => [12, 15]
],
'moveUsersToNode' => true,
'createChat' => true,
'bindingChatIds' => [31],
'settings' => [
'BUSINESS_PROC_AUTHORITY' => ['HEAD', 'DEPUTY_HEAD'],
'REPORTS_AUTHORITY' => ['HEAD']
]
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "humanresources.node.add", b24.Params{
"type": "DEPARTMENT",
"name": "Отдел маркетинга",
"parentId": 1,
"description": "Отвечает за продвижение",
"userIds": b24.Params{
"MEMBER_HEAD": []int{7},
"MEMBER_EMPLOYEE": []int{12, 15},
},
"moveUsersToNode": true,
"createChat": true,
"bindingChatIds": []int{31},
"createChannel": false,
"createCollab": false,
"settings": b24.Params{
"BUSINESS_PROC_AUTHORITY": []string{"HEAD", "DEPUTY_HEAD"},
"REPORTS_AUTHORITY": []string{"HEAD"},
},
})
if err != nil {
return fmt.Errorf("humanresources.node.add: %w", err)
}
var item struct {
ID b24.ID `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
StructureID b24.ID `json:"structureId"`
ParentID b24.ID `json:"parentId"`
Description string `json:"description"`
}
if err := json.Unmarshal(res.Result, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.ID, item.Name)
Ответ
HTTP-статус: 200
{
"result": {
"id": 44,
"name": "Отдел маркетинга",
"type": "DEPARTMENT",
"structureId": 1,
"parentId": 1,
"description": "Отвечает за продвижение",
"accessCode": "DR44",
"userCount": 3,
"colorName": null,
"xmlId": null,
"createdAt": "2026-06-02T11:15:20+03:00",
"updatedAt": "2026-06-02T11:15:20+03:00",
"members": [
{
"userId": 7,
"name": "Анна Смирнова",
"workPosition": "Руководитель отдела маркетинга",
"role": "MEMBER_HEAD",
"avatar": "https://example.bitrix24.ru/upload/main/1/avatar.jpg",
"url": "/company/personal/user/7/"
},
{
"userId": 12,
"name": "Иван Петров",
"workPosition": "Маркетолог",
"role": "MEMBER_EMPLOYEE",
"avatar": null,
"url": "/company/personal/user/12/"
}
]
},
"time": {
"start": 1780388120,
"finish": 1780388120.645321,
"duration": 0.6453211307525635,
"processing": 0.6032140254974365,
"date_start": "2026-06-02T11:15:20+03:00",
"date_finish": "2026-06-02T11:15:20+03:00",
"operating_reset_at": 1780388720,
"operating": 0
}
}
Возвращаемые данные
result
object
Объект с данными созданного элемента структуры
id
integer
Идентификатор созданного отдела или команды
name
string
Название отдела или команды
type
string
Тип элемента структуры
structureId
integer
Идентификатор структуры компании
parentId
integer
Идентификатор родительского отдела или команды
description
string
Описание отдела или команды
accessCode
string
Код доступа элемента структуры
userCount
integer
Количество пользователей в отделе или команде
colorName
string
Цвет команды, если он задан
xmlId
string
Внешний идентификатор элемента структуры
createdAt
datetime
Дата и время создания элемента структуры
updatedAt
datetime
Дата и время последнего обновления элемента структуры
members
array
Список пользователей, добавленных в отдел или команду, с ролями
members[]
object
Объект пользователя отдела или команды
userId
integer
Идентификатор пользователя
name
string
Имя пользователя
workPosition
string
Должность пользователя
role
string
Роль пользователя в отделе или команде
avatar
string
Ссылка на аватар пользователя
url
string
Ссылка на профиль пользователя
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": {
"code": "BITRIX_REST_V3_EXCEPTION_VALIDATION_REQUESTVALIDATIONEXCEPTION",
"message": "Ошибка при валидации объекта запроса",
"validation": [
{
"message": "Обязательное поле `name` не указано",
"field": "name"
}
]
}
}
| Код | Описание | Значение |
|---|---|---|
Поле |
Описание ошибки | Как исправить |
type name parentId |
Обязательное поле #FIELD# не указано |
Добавьте указанное поле в тело запроса |
FIELD# |
В поле #FIELD# требуется тип данных #TYPE# для такого запроса |
Убедитесь, что передаваемое значение нужного типа |
type |
Передано недопустимое значение типа элемента структуры | Используйте DEPARTMENT для отдела или TEAM для команды |
| — | Структура компании по умолчанию не найдена | Проверьте, что структура компании создана и доступна |

