Сменить оформление
1. Посмотреть, что стоит
curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/design" | jq -c '{changed, css}'
curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/css?include_css=0" | jq -c '{bytes, lines, blocks: [.blocks[].name], blocks_unclosed, outside_bytes}'
changed — какие токены сайт уже переопределил. blocks — именованные куски собственного CSS: у каждого своя зона.
2. Цвета и типографика — токенами
curl -s -X PATCH "$API/site/$SITE/design" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"dry_run": true, "tokens": {"color.primary": "#7c3aed", "color.link": "#6d28d9", "h1.size": 44, "paragraph.line_height": 1.6}}' \
| jq -c '{applied, changed: [.changed[] | {token, value}]}'
Проверили — уберите dry_run и повторите. Сайт с документацией получит тот же цвет акцентом (color.accent вычисляется из color.primary). Единицы: размеры числом (44), интерлиньяж множителем (1.6), трекинг в em, длины — со своей единицей ("1200px"). Полный список — стили.
3. Вёрстка — своим куском CSS
Собственный CSS сайта — один лист на всех. Правьте только свой кусок и заливайте лист целиком.
# 1. текущий лист и резервная копия
curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/css" | jq -r .css > site.css
cp site.css site.css.bak
Допишите в конец site.css свой кусок между маркерами с одним именем:
/* ==== PROMO — START ==== */
.promo{padding:64px 24px;background:var(--bg-second-color)}
.promo__title{font-size:40px;color:var(--primary-color)}
/* ==== PROMO — END ==== */
Если кусок PROMO уже есть — замените его содержимое, не трогая остальное. Проверьте без записи:
curl -s -X PUT "$API/site/$SITE/css" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d "$(jq -n --rawfile css site.css '{css: $css, dry_run: true}')" \
| jq -c '{applied, bytes, stripped, warnings}'
stripped пуст, warnings пусты — запишите (тот же запрос без dry_run, с меткой source):
curl -s -X PUT "$API/site/$SITE/css" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d "$(jq -n --rawfile css site.css '{css: $css, source: "promo-block"}')" \
| jq -c '{applied, bytes, cache: .cache.status}'
curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/css?include_css=0&count=.promo" | jq -c '{blocks: [.blocks[] | select(.name | test("PROMO"))], counts}'
4. Проверить на странице
curl -s "https://ВАШ_ДОМЕН/" | grep -o '\.promo{[^}]*}'
curl -s "https://ВАШ_ДОМЕН/" | grep -o 'id="onpress-design-tokens"[^<]*'
Токены выводятся блоком onpress-design-tokens в <head>, собственный CSS — последним блоком стилей. Кэш страниц сбрасывается при каждой записи; проверяйте без кук.
5. Откат
# CSS — залить резервную копию
curl -s -X PUT "$API/site/$SITE/css" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d "$(jq -n --rawfile css site.css.bak '{css: $css, source: "rollback"}')" | jq -c '{applied, bytes}'
# токены — вернуть умолчания темы
curl -s -X DELETE "$API/site/$SITE/design" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"tokens": ["color.primary", "color.link", "h1.size", "paragraph.line_height"]}' | jq -c .
Истории версий у CSS нет — резервную копию держите вы.