Для AI-агентов: markdown этой страницы — /docs-content/entities/product-sections.md индекс документации — /llms.txt

Разделы товаров

Управление разделами каталога товаров CRM: создание, получение, обновление, удаление и поиск. Раздел группирует товары внутри каталога и может быть вложенным.

Битрикс24 API: crm.productsection.* Скоуп: crm

Методы /v1/product-sections устарели. Для новых интеграций используйте Разделы каталога.

Создать раздел

POST /v1/product-sections

Создаёт новый раздел в каталоге товаров. Поля передаются плоско в корне JSON, без обёртки fields.

Поля запроса (body)

Поле Тип Обяз. Описание
name string да Название раздела
catalogId number нет Идентификатор каталога. Если не передавать — используется каталог товаров CRM портала. Список: GET /v1/catalogs
sectionId number нет Идентификатор родительского раздела для вложенности. У раздела верхнего уровня — null. Список: GET /v1/product-sections
code string нет Символьный код раздела. Если не передавать — формируется из name
xmlId string нет Внешний идентификатор
sort number RO Порядок сортировки. Битрикс24 переданное значение не сохраняет, поэтому поле отклоняется с 400 READONLY_FIELD — менять порядок можно в интерфейсе Битрикс24

Примеры

curl — личный ключ

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/product-sections" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Одежда",
    "catalogId": 25
  }'

curl — OAuth-приложение

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/product-sections" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Одежда",
    "catalogId": 25
  }'

JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/product-sections', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Одежда',
    catalogId: 25,
  }),
})

const { success, data } = await res.json()
console.log('ID раздела:', data.id)

JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/product-sections', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Одежда',
    catalogId: 25,
  }),
})

const { success, data } = await res.json()

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data object Созданный раздел
data.id number Идентификатор созданного раздела
data.name string Название раздела
data.catalogId number Идентификатор каталога. Список: GET /v1/catalogs
data.sectionId number Идентификатор родительского раздела или null. Список: GET /v1/product-sections
data.xmlId string Внешний идентификатор или null
data.code string Символьный код раздела
meta.warnings array Приходит, только если в теле есть поле, которого нет среди полей раздела. Раздел при этом создаётся. Элемент — code: "UNRECOGNIZED_WRITE_FIELD", field с именем поля и message

Пример ответа

JSON
{
  "success": true,
  "data": {
    "id": 197,
    "name": "Одежда",
    "catalogId": 25,
    "sectionId": null,
    "xmlId": null,
    "code": "odezhda"
  }
}

Пример ответа при ошибке

422 — не передано название раздела:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Не указано название раздела."
  }
}

Ошибки

HTTP Код Описание
422 BITRIX_ERROR Не передано поле name — сообщение «Не указано название раздела.»
400 READONLY_FIELD В теле передано поле, доступное только для чтения, — id или sort
403 SCOPE_DENIED Ключу не хватает скоупа crm
401 MISSING_API_KEY Не передан заголовок X-Api-Key

Полный список общих ошибок API — Ошибки.

Смотрите также