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

Назначить системную страницу

PUT /v1/sites/:id/system-pages/:type

Назначает страницу сайта на системную роль, например делает её корзиной или личным кабинетом. Если роль уже занята, новая страница заменяет прежнюю.

Параметры

Параметр Тип Обяз. Описание
id (path) number да ID сайта. Список: GET /v1/sites
type (path) string да Роль: mainpage, catalog, personal, cart, order, payment, compare, feedback. Что значит каждая — Системные страницы
scope (query) string нет Внутренняя область лендингов: KNOWLEDGE / GROUP / MAINPAGE. Указывайте, если сайт принадлежит соответствующей области. Иначе возвращается 404 ENTITY_NOT_FOUND. Для обычного сайта не передаётся

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

Поле Тип Обяз. Описание
pageId number да ID страницы этого же сайта. Список страниц сайта: GET /v1/pages?filter[siteId]=:id

Других полей тело не принимает: лишнее поле отвечает 400 INVALID_PARAMS.

Примеры

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

Terminal
curl -X PUT "https://vibecode.bitrix24.tech/v1/sites/223/system-pages/personal" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"pageId": 2373}'

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

Terminal
curl -X PUT "https://vibecode.bitrix24.tech/v1/sites/223/system-pages/personal" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"pageId": 2373}'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/sites/223/system-pages/personal', {
  method: 'PUT',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ pageId: 2373 }),
})

const { success, data } = await res.json()
console.log('Роли сайта:', data.map((row) => `${row.type} → ${row.pageId}`))

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/sites/223/system-pages/personal', {
  method: 'PUT',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ pageId: 2373 }),
})

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

Поля ответа

В ответе — все привязки сайта после изменения, а не только назначенная.

Поле Тип Описание
success boolean Всегда true при успехе
data array Все привязки сайта
data[].type string Роль: mainpage, catalog, personal, cart, order, payment, compare, feedback. Что значит каждая — Системные страницы
data[].pageId number ID страницы, назначенной на роль. Получить страницу: GET /v1/pages/:id
data[].title string Название страницы
data[].deleted boolean Страница лежит в корзине
data[].active boolean Страница опубликована

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

JSON
{
  "success": true,
  "data": [
    {
      "type": "cart",
      "pageId": 2371,
      "title": "Docs test cart",
      "deleted": false,
      "active": false
    },
    {
      "type": "personal",
      "pageId": 2373,
      "title": "Docs test personal",
      "deleted": false,
      "active": false
    }
  ]
}

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

400 — страница принадлежит другому сайту:

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "Page must belong to this site"
  }
}

Ошибки

HTTP Код Описание
400 INVALID_PARAMS Page must belong to this site — страница с pageId лежит на другом сайте
400 INVALID_PARAMS Unknown system-page type — type не входит в список ролей
400 INVALID_PARAMS pageId must be a positive safe integer — pageId не является положительным целым числом
400 INVALID_PARAMS id must be a positive safe integer — id не является положительным целым числом
400 INVALID_PARAMS Unsupported body field — в теле есть поле, которого метод не принимает
400 INVALID_PARAMS Body must be a JSON object — тело не является JSON-объектом, например передан массив
400 INVALID_PARAMS Unsupported query parameter — передан query-параметр, которого метод не принимает
400 MISSING_REQUIRED_FIELDS В теле нет pageId
400 INVALID_SCOPE scope не равен KNOWLEDGE, GROUP или MAINPAGE
404 ENTITY_NOT_FOUND Entity not found or not visible — сайт с таким ID не найден, недоступен пользователю или лежит в другой области
404 ENTITY_NOT_FOUND Page not found or not visible — страница с pageId не найдена или недоступна пользователю
409 LANDING_MODULE_NOT_ENABLED Модуль «Сайты» недоступен на портале. Попросите администратора портала включить его — пока модуль выключен, повтор запроса вернёт тот же отказ
422 BITRIX_ERROR Bitrix24 did not save the binding change; site settings permission may be missing — после записи привязки нет. Проверьте, есть ли у пользователя право менять настройки сайта
422 BITRIX_ERROR Bitrix24 did not confirm the binding change — Битрикс24 не подтвердил запись
422 BITRIX_ERROR Bitrix24 returned invalid system pages — Битрикс24 вернул список привязок в неожиданном виде
403 WRITE_BLOCKED_READONLY_KEY Ключ работает в режиме только для чтения. Запрос отклоняется до обращения к порталу
403 SCOPE_DENIED API-ключ не имеет скоупа landing
401 TOKEN_MISSING API-ключ не имеет настроенных токенов

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

Известные особенности

  • Одна страница может занимать несколько ролей. Назначение страницы на вторую роль не снимает её с первой: в ответе она приходит дважды, с разными type.
  • Повторное назначение безопасно. Повторное назначение той же страницы на ту же роль отвечает 200 с тем же составом привязок.
  • Публикация не нужна. Назначить можно и неопубликованную страницу: в ответе у неё active: false.

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