• Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • Markdown
      • Аналитика страниц
    • Фреймы
      • Блоки
      • Бинды data-op-bind
      • Повторитель onpress/repeat
      • Сборка и копии
      • Фреймы в Markdown
      • Фреймы с данными
      • Готовые фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
  • КЕЙСЫ
    • Создание сайтов
    • Работа с контентом
    • Фреймы и данные
    • Настройка сайта
    • Перевод страницы
  • ПРИЛОЖЕНИЯ
    • Приложения
      • Закрытый доступ
      • Данные приложения
      • Внешние данные
      • Демо
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
    • Фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
    • Редиректы
    • Кредиты и автоматизация
    • Входящие
    • Кросспостинг
OnPress OnPress
  • Документация
  • Контакты
Войти
Обзор Справочник API
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • Markdown
      • Аналитика страниц
    • Фреймы
      • Блоки
      • Бинды data-op-bind
      • Повторитель onpress/repeat
      • Сборка и копии
      • Фреймы в Markdown
      • Фреймы с данными
      • Готовые фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
  • КЕЙСЫ
    • Создание сайтов
    • Работа с контентом
    • Фреймы и данные
    • Настройка сайта
    • Перевод страницы
  • ПРИЛОЖЕНИЯ
    • Приложения
      • Закрытый доступ
      • Данные приложения
      • Внешние данные
      • Демо
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
    • Фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
    • Редиректы
    • Кредиты и автоматизация
    • Входящие
    • Кросспостинг
Управление
Markdown
Открыть в ИИ
  • Открыть в ChatGPT
  • Открыть в Claude
  • Открыть в Gemini
  • Открыть в Perplexity
  • Открыть в Grok
  • Открыть в DeepSeek

Сайдбар документации

Эндпоинты /docs/sidebar, которые читают и меняют меню фрейма документации: чтение, замена целиком, порядок, правка, скрытие и показ пункта; как сайдбар устроен для человека — Сайдбар документации.

info

Во всех примерах API — https://onpress.pro/api/v2, SITE — id сайта (SITE_ID), OP_TOKEN — токен op_XXXX. Права на всех эндпоинтах страницы — администратор сайта. Как выбирается сайт и в какой форме приходят отказы — Доступ и токен.

Примеры сняты на этой документации (сайт onpress.pro).

Режим и общие поля

Режим определяется по разметке фрейма при каждом запросе и стоит в ответе полем source:

sourceЧто выводит фреймС чем работают эндпоинты
datasetблок onpress/repeat по пользовательским данным со ссылками внутри (menu.docs, menu.api)с этими данными; страницы не трогаются. Те же данные читает и пишет /data/{name}, но без проверки ссылок и сверки версии
pagesблок onpress/docs-navс деревом страниц документации, см. Дерево страниц
ПолеГдеСмысл
frameзапрос или телофрейм документации, слаг или id; без него — опция сайта onpress_docs_frame, затем слаг docs
menuзапрос или телоимя меню, когда фрейм выводит несколько; без него — по адресам пунктов, см. ниже
if_sha256теловерсия меню из GET; другая — 409 sidebar_changed
dry_runтело или запроспоказать изменения без записи

Пункт меню — объект title, необязательный url и вложенные пункты под ключом уровня: ключи берутся из фрейма и стоят в ответе GET полем keys (на onpress.pro — items у группы, children у пункта). Пункты глубже, чем выводит фрейм (levels), сохраняются, но не видны.

Как назвать пункт — в пути эндпоинта, в parent, after, before, order:

ФормаПример
ссылка пункта; в пути — тильды вместо слешей/docs/v2/ru/guides/frames/, docs~v2~ru~frames
id или слаг страницы — ищется по её адресу6257
подпись группы без ссылки, без учёта регистраСУЩНОСТИ
координата: индексы с нуля через точку@1.0.2

Какое меню. Названо menu — оно. Одно меню во фрейме — оно. Иначе PUT и show выбирают меню, чей общий каталог (root в GET) — самое длинное начало адресов пунктов: /docs/v2/ru/reference/… уходит в menu.api, остальное /docs/v2/ru/guides/… — в menu.docs. Остальные эндпоинты берут меню, где нашёлся пункт.

Ссылки проверяются. Каждая ссылка на путь сайта (начинается с /) должна вести на опубликованную или приватную страницу; внешние адреса и якоря не проверяются. PUT проверяет всё меню, остальные записи — только новые ссылки.

Чужая правка не затирается. Перед записью меню перечитывается; если его успели поменять, ответ 409 sidebar_changed и ничего не записано.

GET /docs/sidebar

Отдаёт меню сайдбара деревом, его версию sha256 и битые ссылки. Например, прочитать меню справочника API:

curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/docs/sidebar?menu=menu.api"
{
  "success": true,
  "site_id": "ef7QmgyEc",
  "home_url": "https://onpress.pro",
  "source": "dataset",
  "frame": { "id": "fd26d10638458973", "slug": "docs" },
  "frame_source": "default",
  "total": 33,
  "menus": [
    {
      "name": "menu.api",
      "lang": "ru",
      "option": "onpress_dataset_menu.api__ru",
      "root": "/docs/v2/ru/reference/",
      "levels": 3,
      "keys": ["items", "children"],
      "updated_at_gmt": "2026-10-23 15:47:20",
      "sha256": "2d272058…",
      "total": 33,
      "links": 29,
      "broken": 0,
      "items": [
        { "title": "НАЧАЛО", "items": [
          { "title": "Основы API", "url": "/docs/v2/ru/reference/", "children": [
            { "title": "Авторизация", "url": "/docs/v2/ru/reference/access/" }
          ] }
        ] }
      ]
    }
  ],
  "broken": []
}
ПараметрТипПо умолчаниюОписание
menustringвсе менюодно меню
langstringязык фреймаязык варианта, если фрейм его не задал; фрейм с "lang":"ru" всегда отдаёт ru
framestringфрейм документации сайтафрейм, слаг или id

total — пунктов вместе с группами, links — из них со ссылкой на страницу сайта. broken — ссылки в никуда: menu, at, title, url, reason (page_not_found или page_not_published с page_id и status). Отказы — 404 sidebar_menu_not_found и 404 docs_frame_not_found, полный список — в кодах ошибок.

PUT /docs/sidebar

Заменяет меню присланным списком целиком. Например, проверить новый порядок без записи — тело {"menu": "menu.docs", "items": […], "dry_run": true}. Ответ:

Пункт, названный страницей — {"id": 6261}, {"slug": "data"} или просто 6261, — превращается в {"title": "<заголовок>", "url": "<адрес>"}; присланный title важнее. Вложенные пункты под чужим для уровня ключом переносятся под ключ фрейма с предупреждением. "hidden": true исключает пункт, status отбрасывается с предупреждением, missing игнорируется.

{
  "success": true,
  "source": "dataset",
  "menu": { "name": "menu.docs", "lang": "ru", "option": "onpress_dataset_menu.docs__ru", "root": "/docs/v2/ru/guides/" },
  "items": 32,
  "changes": [
    { "action": "changed", "title": "Фреймы", "url": "/docs/v2/ru/guides/frames/", "order": { "from": "1.1", "to": "1.0" }, "at": "1.0" },
    { "action": "changed", "title": "Страницы", "url": "/docs/v2/ru/guides/pages/", "order": { "from": "1.0", "to": "1.1" }, "at": "1.1" }
  ],
  "unchanged": false,
  "sha256_before": "223572ab…",
  "sha256": "9b1e04c7…",
  "warnings": [],
  "dry_run": true,
  "applied": false,
  "tree": [ … ]
}
ПолеТипПо умолчаниюОписание
itemsarray—меню целиком, обязательно
menustringпо адресам пунктовкакое меню заменить
if_sha256string—версия из GET; другая — 409 sidebar_changed
dry_runboolfalseпоказать changes без записи

changes — по пункту на отличие: added, removed или changed с тем, что поменялось: title, moved (другая ветка), order (другое место среди тех же соседей) или другое поле пункта. Пункт узнаётся по ссылке, группа — по подписи. После записи добавляются applied: true, updated_at_gmt и rebaked — пересборка страниц, которые выводят меню. Отказы — 400 bad_items, 409 sidebar_items_unresolved (errors: [{at, url, reason}], ничего не записано), 409 sidebar_menu_ambiguous, 409 sidebar_changed; полный список — в кодах ошибок.

POST /docs/sidebar/reorder

Меняет порядок пунктов в одной ветке: целиком списком или сдвигом одного пункта. Например, поставить «Фреймы» первыми в группе «Сущности»:

curl -s -X POST "$API/site/$SITE/docs/sidebar/reorder" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"parent": "СУЩНОСТИ", "order": ["/docs/v2/ru/guides/frames/"]}'
ПолеТипПо умолчаниюОписание
parent + orderstring, array0 — верхний уровеньветка и её пункты по порядку; неназванные встают после (appended — сколько)
id + after / before / positionstring—сдвинуть один пункт среди его соседей
menu, if_sha256, dry_run——см. общие поля

Ответ — как у PUT, плюс parent и order — ссылки пунктов ветки по порядку. Отказы — 400 bad_reorder, 409 not_a_sibling (пункт из другой ветки; перенос — PATCH с parent), 404 item_not_found.

PATCH /docs/sidebar/items/{ref}

Меняет один пункт: подпись, ссылку, ветку или место. Например, переименовать пункт «Данные» без записи:

curl -s -X PATCH "$API/site/$SITE/docs/sidebar/items/docs~v2~ru~data" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"title": "Данные сайта", "dry_run": true}'
ПолеТипПо умолчаниюОписание
titlestring—подпись пункта; заголовок страницы не меняется
urlstring—куда ведёт пункт — опубликованная страница; "" делает пункт подписью без ссылки
parentstring—другая ветка: группа или пункт; 0 — верхний уровень
after, before, positionstring, number—место среди соседей после переноса
hiddenbool—true — убрать, как /hide

Ответ — как у PUT, плюс item с подписью и ссылкой после правки. Отказы — 400 nothing_to_update, 400 status_not_in_sidebar (статус меняется у страницы), 404 item_not_found, 409 ambiguous_item (candidates), 409 bad_parent (перенос внутрь себя).

POST /docs/sidebar/items/{ref}/hide и /show

hide убирает пункт вместе с вложенными, предупреждение называет их число. show добавляет пунктом страницу {ref} (id, слаг или путь); тело — title, parent, after, before, position, menu. Без parent пункт встаёт под ближайший пункт-предок по адресу страницы; такого нет — 400 parent_required. Страница уже в меню — applied: false, unchanged: true. Например, показать страницу «Коды ошибок» без записи:

curl -s -X POST "$API/site/$SITE/docs/sidebar/items/docs~v2~ru~errors~codes/show" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"dry_run": true}'
{
  "success": true,
  "source": "dataset",
  "menu": { "name": "menu.docs", "lang": "ru", "option": "onpress_dataset_menu.docs__ru", "root": "/docs/v2/ru/guides/" },
  "item": { "title": "Коды ошибок", "url": "/docs/v2/ru/guides/errors/codes/", "page_id": 6300, "hidden": false },
  "changes": [ { "action": "added", "title": "Коды ошибок", "url": "/docs/v2/ru/guides/errors/codes/", "at": "4.3.0" } ],
  "dry_run": true,
  "applied": false
}

Дерево страниц

Когда фрейм выводит onpress/docs-nav, source — pages, и пункт — страница, которую собирает фрейм документации: вложенность — её родитель, порядок — menu_order, подпись — заголовок, скрытый пункт — страница с меткой скрытия.

GET отдаёт tree: у узла id, title, slug, status, parent, menu_order, hidden, url, link, lang, children; параметры include_hidden, statuses, public (только publish), lang (дерево одного языка).

PUT принимает пункты-страницы (id, slug, url) с необязательными title (меняет заголовок страницы), status, hidden, children; missing: "hide" (по умолчанию) скрывает страницы документации вне дерева, "keep" оставляет; запрос заменяет дерево одного языка и выполняется одной транзакцией.

Перенос пункта в другую ветку меняет адрес страницы и её поддерева, старые адреса отвечают 301 на новые (moved, old_paths). Скрытие раздела с видимыми детьми поднимает детей на верхний уровень — ответ предупреждает. reorder, PATCH (title, status, parent, hidden, after/before/position), hide, show работают со страницами; url в PATCH и menu в этом режиме — ошибка.

Коды ошибок

КодСтатусКогда
bad_items400items не массив
bad_reorder400нет ни order, ни id
nothing_to_update400PATCH без полей; url в дереве страниц
status_not_in_sidebar400status для меню из данных
parent_required400show не нашёл ветку; укажите parent
item_ref_required400пустая ссылка на пункт
bad_item_url, empty_item—в sidebar_items_unresolved.errors: url не строка; пункт без подписи, ссылки и вложенных
item_not_found404такого пункта в меню нет
sidebar_menu_not_found404фрейм не выводит меню с таким именем
docs_frame_not_found404названного фрейма на сайте нет
page_not_found404нет такой страницы
ambiguous_item409подпись или ссылка в меню не одна; координаты в candidates
ambiguous_page409слаг у нескольких страниц; candidates
bad_parent409перенос пункта внутрь себя
not_a_sibling409в order пункт из другой ветки
sidebar_menu_ambiguous409меню несколько, и непонятно, какое; список в menus
sidebar_changed409меню поменялось после чтения или во время запроса
sidebar_items_unresolved409ссылка в никуда, неизвестная страница, пустой пункт; ничего не записано, разбор в errors
duplicate_item409дерево страниц: страница дважды
bad_missing, bad_status400дерево страниц: неверные missing, statuses
unknown_language422дерево страниц: языка lang нет на сайте
arrow_backНазад
Данные
Далееarrow_forward
Языки
На этой странице
  • Режим и общие поля
    • GET /docs/sidebar
      • PUT /docs/sidebar
        • POST /docs/sidebar/reorder
          • PATCH /docs/sidebar/items/{ref}
            • POST /docs/sidebar/items/{ref}/hide и /show
              • Дерево страниц
                • Коды ошибок
                1. Главная
                2. Docs
                3. Документация OnPress v2
                4. Справочник API
                5. Сайдбар документации
                OnPress
                OnPress
                ИП Зуев И.В. ИНН: 360408359441
                info@onpress.pro
                © 2026
                политика конфиденциальности публичная оферта
                • visa
                • mastercard
                • sber
                • tpay