• Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • 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

Стили

Эндпоинты оформления сайта: собственный CSS (системные данные css) и CSS-переменные темы (css.variables); как слои оформления складываются на странице — Стили и оформление.

info

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

Оба имени есть в GET /data/system: у css — methods: ["GET", "PUT", "DELETE"], у css.variables — methods: ["GET", "PATCH", "DELETE"], у обоих deletable: true. DELETE здесь возвращает сайт к оформлению темы. Любая запись без dry_run сбрасывает кэш страниц и сразу собирает заново статические копии страниц — исход в поле ответа rebaked, см. статические копии.

GET /data/css

Отдаёт лист одной записью в items, даже если своего CSS у сайта нет (exists: false, css: ""). Например, узнать размер листа и сколько раз в нём встречаются два класса, не выгружая сам лист:

curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/data/css?include_css=0&count=.site-header,.opdoc__body"
{
  "success": true,
  "site_id": "x9HTLHECq",
  "name": "css",
  "origin": "system",
  "writable": true,
  "write": { "method": "PUT", "methods": ["PUT", "DELETE"], "at": "/data/css", "dry_run": true, "delete": { "method": "DELETE", "dry_run": true } },
  "total": 1,
  "items": [{
    "css_omitted": "the body was not asked for: repeat without include_css=0 to get it",
    "exists": true,
    "bytes": 109491,
    "lines": 3131,
    "sha256": "5aed97061c04f656fb935f1cb5b27bf7345c4d0798695c5ed4c3ef73b8045da6",
    "autoload": "off",
    "updated_at_gmt": "2026-10-23 15:27:36",
    "updated_by": 0,
    "source": "codex-rollback",
    "stripped": [],
    "blocks": [
      { "name": "footer-frame-podval-sajta", "from": 0, "to": 90, "lines": 89, "bytes": 30982 },
      { "name": "header-frame", "from": 92, "to": 1035, "lines": 942, "bytes": 20260 }
    ],
    "blocks_unclosed": [],
    "outside_bytes": 0,
    "counts": { ".site-header": 127, ".opdoc__body": 210 },
    "option": "onpress_custom_css"
  }]
}
ПараметрТипПо умолчаниюОписание
include_css0/110 — без тела листа, вместо css приходит css_omitted
countstring—до 20 подстрок через запятую — сколько раз встречается каждая (поле counts)
Поле записиТипОписание
cssstringлист как есть, без обёртки
exists, bytes, lines, sha256bool, number, number, stringесть ли свой лист, его размер, строки и хеш
autoloadstringyes (или on) для листов до 64 КБ, no (off) для больших
updated_at_gmt, updated_by, sourcestring, number, stringкогда, кем и с какой меткой лист записан последний раз; null, если записи не было
strippedarrayчто вырезала очистка при последней записи: rule, count
blocksarrayкуски между строками-сторожами :root{--имя:1} … :root{--имя-end:1}: name, from/to — номера строк маркеров с нуля, lines, bytes
blocks_unclosedarrayоткрытые и не закрытые куски: name, from
outside_bytesnumberнепустые байты вне кусков
countsobjectответ на count: подстрока → сколько раз

PUT /data/css

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

curl -s -X PUT "$API/site/$SITE/data/css" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"css": "body{color:red}</style><script>alert(1)</script>", "dry_run": true}'
{
  "success": true,
  "site_id": "x9HTLHECq",
  "option": "onpress_custom_css",
  "bytes": 23,
  "max_bytes": 262144,
  "sha256": "…",
  "autoload": "yes",
  "stripped": [
    { "rule": "style_close_tag", "count": 1, "reason": "a closing </style> tag ends the style element and lets the rest through as markup", "samples": ["</style>"] },
    { "rule": "script_tag", "count": 2, "reason": "a <script> tag has no place in styles; it is inert inside <style> but not in any other context", "samples": ["<script>", "</script>"] }
  ],
  "warnings": [],
  "dry_run": true,
  "applied": false,
  "css": "body{color:red}alert(1)",
  "source": "css"
}
ПолеТипПо умолчаниюОписание
cssstring—весь лист, обязательно; пустая строка допустима
sourcestringnodeметка записи, видна в source при чтении
dry_runboolfalseвернуть очищенный лист без записи
flush_cachebooltrueсбросить весь кэш страниц сайта

Настоящая запись отвечает applied: true, updated_at_gmt, cache (status: flushed, empty, skipped, failed; dirs) и rebaked — статические копии. Поле source ответа — имя системных данных, как у любой записи в /data/{name}. Очистка вырезает </style>, <script>, адреса javascript: и vbscript:, expression( и управляющие символы, незакрытый /* закрывает, хвостовой перевод строки снимает; о каждом вырезанном говорит stripped.

CSS сайта уходит в браузер как есть, поэтому комментариев /* … */ и кириллицы вне строк в нём быть не должно — такой лист отклоняется целиком, проверка идёт и при dry_run. Пропускаются лицензионные заголовки /*! … */ и строки (content: "/* */", адреса в url(…) в кавычках). Куски размечайте строками-сторожами :root{--имя:1} и :root{--имя-end:1}. Отказ на комментарий выглядит так:

{
  "success": false,
  "error": "comments_not_allowed",
  "message": "site CSS has 1 comment(s) at line(s) 3: code that goes to the browser carries no comments …",
  "kind": "css",
  "count": 1,
  "found": [{ "kind": "block", "line": 3, "text": "/* y */" }]
}
КодСтатусКогдаЧто делать
css_required400нет поля cssпришлите лист строкой
wrong_method_for_source405PATCH вместо PUTотправьте PUT
css_too_large413лист больше 256 КБ; bytes, max_bytesсократите лист
comments_not_allowed422в листе комментарий или кириллица вне строк; места — в foundуберите комментарии, куски размечайте сторожами

DELETE /data/css

Удаляет лист: сайт возвращается к стилям темы и её CSS-переменным. Например, сначала посмотреть, что удалится:

curl -s -X DELETE "$API/site/$SITE/data/css" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"dry_run": true}'
ПолеТипПо умолчаниюОписание
dry_runboolfalseничего не удалять, ответить would_clear и bytes
flush_cachebooltrueсбросить весь кэш страниц сайта

Тело необязательно. Настоящее удаление отвечает так:

{ "success": true, "site_id": "x9HTLHECq", "option": "onpress_custom_css", "cleared": true, "cache": { "status": "flushed" }, "rebaked": { "status": "ok", "total": 1, "baked": 1, "static": { "status": "ok", "pages": [{ "id": 7036, "published": true, "url": "/home-next" }] } }, "source": "css" }

GET /data/css.variables

Отдаёт все 66 CSS-переменных темы: по записи в items на переменную, общее — в meta. Например:

curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/data/css.variables"
{
  "success": true,
  "site_id": "x9HTLHECq",
  "name": "css.variables",
  "origin": "system",
  "writable": true,
  "total": 66,
  "meta": {
    "theme": "onpress-v2",
    "defaults_source": "themes/onpress-v2/assets/css/parts/_variables.css",
    "changed": ["color.primary", "color.accent", "color.accent_light", "color.accent_dark", "h2.font", "h2.size", "h2.weight", "h2.line_height", "h2.letter_spacing", "h2.color"],
    "stores": { "design": "onpress-sidepanel-design", "typography": "onpress-sidepanel-typography", "tokens": "onpress_design_tokens" },
    "css": "html:root{--primary:0 85 255;--primary-light:64 128 255;--primary-dark:0 64 191;}"
  },
  "items": [
    { "variable": "color.primary", "value": "#0055ff", "default": "#0066ff", "source": "site", "css_var": "--primary-color", "type": "color", "description": "Primary color" },
    { "variable": "h2.size", "value": 40, "default": 36, "source": "site", "css_var": "--h2-fz", "type": "px", "description": "h2: size" }
  ]
}
ПараметрТипПо умолчаниюОписание
themestringтема сайтавзять значения по умолчанию другой установленной темы
ПолеОписание
variableимя для записи: color.primary, h2.size
value, defaultзначение на сайте и значение темы
sourcedefault или site — задано на сайте
css_varимя CSS-переменной
typecolor, px, int, ratio, em, length, string, enum с values, rgb-channels
descriptionчто задаёт переменная

В meta: theme и defaults_source — откуда взяты значения по умолчанию, changed — переменные, заданные на сайте, stores — где они хранятся, css — производные переменные, которые тема выводит сама. Список переменных — Стили и оформление.

PATCH /data/css.variables

Меняет только названные переменные, остальные сохраняют значения. Например, основной цвет и размер H2 с проверкой без записи:

curl -s -X PATCH "$API/site/$SITE/data/css.variables" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"variables": {"color.primary": "#0055ff", "h2.size": 40}, "dry_run": true}'
{
  "success": true,
  "dry_run": true,
  "applied": false,
  "site_id": "x9HTLHECq",
  "changed": [
    { "variable": "color.primary", "value": "#0055ff", "css_var": "--primary-color", "store": "onpress-sidepanel-design" },
    { "variable": "h2.size", "value": 40, "css_var": "--h2-fz", "store": "onpress-sidepanel-typography" },
    { "variable": "color.accent", "value": "0 85 255", "css_var": "--primary", "store": "onpress_design_tokens", "derived": true }
  ],
  "css": "html:root{--primary:0 85 255;--primary-light:64 128 255;--primary-dark:0 64 191;}",
  "source": "css.variables"
}
ПолеТипПо умолчаниюОписание
variablesobject—{имя: значение}, обязательно
dry_runboolfalseпроверить значения и показать итоговый CSS без записи
flush_cachebooltrueсбросить кэш страниц
themestringтема сайтазначения по умолчанию другой темы

changed — что поменяется: variable, value, css_var, store; derived: true — переменная, выведенная из названной (акцент из основного цвета). Настоящая запись отвечает applied: true, stores, cache и rebaked. Типографика хранится уровнями, поэтому запись одного свойства (h2.size) закрепляет весь уровень h2: остальные его свойства тоже становятся site.

КодСтатусКогдаЧто делать
nothing_to_update400нет variablesпришлите {"variables": {…}}
unknown_token400переменной нет; имя — в tokenвозьмите имя из GET /data/css.variables
bad_token_value400значение не подходит к типу; имя — в tokenисправьте значение
invalid_theme400такой темы нетуберите theme
wrong_method_for_source405PUT вместо PATCHотправьте PATCH

DELETE /data/css.variables

Возвращает переменные к значениям темы: с {"variables": [...]} — только названные, без тела — все. Сброс color.primary снимает и выведенный из него акцент color.accent. Например, вернуть размер H2:

curl -s -X DELETE "$API/site/$SITE/data/css.variables" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"variables": ["h2.size"]}'
{ "success": true, "site_id": "x9HTLHECq", "reset": ["h2.size"], "css": "html:root{--primary:0 85 255;--primary-light:64 128 255;--primary-dark:0 64 191;}", "cache": { "status": "flushed", "dirs": ["…/supercache/test.onpress.pro"] }, "rebaked": { "status": "ok", "total": 1, "baked": 1 }, "source": "css.variables" }
ПолеТипПо умолчаниюОписание
variablesstring[]всеимена переменных для сброса
dry_runboolfalseничего не менять, ответить would_change — заданные на сайте переменные из названных, с value и default

Без тела ответ — reset: "all" и removed_options: сайт возвращается к теме целиком.

КодСтатусКогдаЧто делать
unknown_token400переменной нет; имя — в tokenвозьмите имя из GET /data/css.variables

Статические копии

Страница, которую сайт отдаёт готовым файлом, держит ссылку на файл CSS сайта (его имя меняется вместе с содержимым) и значения CSS-переменных на момент сборки, а сброс кэша страниц её не касается. Поэтому PUT и DELETE /data/css, PATCH и DELETE /data/css.variables после записи собирают заново все такие копии сайта, и новый CSS виден на них сразу, без POST /frames/rebake. Проверка без записи (dry_run) копий не трогает. Сборка — следствие уже состоявшейся записи: её неудача не отменяет запись и не меняет код ответа, только поле rebaked.

Поле rebakedСмысл
statusok — все копии собраны; partial — часть не собралась; failed — ни одна; nothing — копий у сайта нет (reason)
totalсколько копий у сайта
bakedсколько собрано и лежит на месте
skipped, capкопий больше предела за один вызов (200): сколько осталось, предел
static.pages[]по странице: id, published, url, reason — почему копии нет (например, renders_on_request: страница теперь собирается на запросе, копия снята)
failures[]пачки страниц, которые не собрались: pages, status, reason
{ "status": "ok", "total": 1, "baked": 1, "static": { "status": "ok", "pages": [{ "id": 7036, "published": true, "url": "/home-next" }] } }

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

arrow_backНазад
Ошибки
Далееarrow_forward
Медиа
На этой странице
  • GET /data/css
    • PUT /data/css
      • DELETE /data/css
        • GET /data/css.variables
          • PATCH /data/css.variables
            • DELETE /data/css.variables
              • Статические копии
              1. Главная
              2. Docs
              3. Документация OnPress v2
              4. Справочник API
              5. Стили
              OnPress
              OnPress
              ИП Зуев И.В. ИНН: 360408359441
              info@onpress.pro
              © 2026
              политика конфиденциальности публичная оферта
              • visa
              • mastercard
              • sber
              • tpay