Данные — именованные JSON-списки сайта, все под $API/site/$SITE/data. Пользовательские данные — ваши наборы: массив объектов с любыми полями, у набора могут быть варианты на язык (lang). Системные данные — меню, настройки, языки, оформление и страницы сайта под зарезервированными именами. И те и другие читаются одним GET /data/{name}. Пользовательские пишутся целиком PUT или точечно PATCH; системные — методом, который указан у имени в GET /data/system. Что такое данные и зачем они нужны — на странице «Данные».
info
Во всех примерах API — https://onpress.pro/api/v2, SITE — id сайта (SITE_ID), OP_TOKEN — токен op_XXXX.
языки, на которых опубликована страница: slug, code, name, locale, url, page_id, current, is_default; страница на одном языке дает пустой список. Нужен page
отданный вариант; причина, если отдан не запрошенный
contextual, page_id, needs_page
зависит ли от страницы; какая взята; нужна, но не передана
writable, write, readonly_because
у системных — можно ли и как менять
match, match_total
во что разрешились токены; сколько элементов было до фильтра
window, window_total
применённое окно; сколько было до среза
meta
у меню — {menu_id, invalid_items}
same_name_dataset
у системного имени есть набор с тем же именем; читаются системные данные
Код
HTTP
Когда
source_not_found
404
нет такого имени
page_not_found
404
страницы из page нет
match_token_unsupported
400
токен в match не поддерживается; список — в supported
PUT /data/{name}
Создаёт пользовательский набор или заменяет его целиком; фреймы, которые его читают, пересобираются.
Поле
Тип
По умолчанию
Описание
items
array
—
обязательно; элементы набора, до 512 КБ
lang
string
—
записать вариант языка
dry_run
bool
false
проверить без записи
Имя набора: латиница в нижнем регистре, цифры, -, _ и . между частями, до 64 символов. Заняты системные имена, system, user, sources, resolve, settings и имена на item., slot., frame., page..
curl -s -X PUT "$API/site/$SITE/data/home_features" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"items": [{"title": "Быстрый старт", "text": "Сайт за пять минут"}]}'
{"patch": [...]} с append, merge, set_default, remove
есть
site.socials, site.organization
поля по именам
есть
css.variables
{"variables": {…}}
есть
Код
HTTP
Когда
nothing_to_update
400
нет patch
bad_patch_op
400
нет action, неизвестное действие или нет нужного поля
item_ref_required
400
нет ни index, ни match
item_not_found
404
элемент не найден
dataset_not_found
404
набора нет
dataset_too_large
413
после правки больше 512 КБ
field_belongs_elsewhere
400
поле site.settings меняется в другом месте; адрес — в fields
whole_list_not_accepted
400
в site.languages прислан список целиком
wrong_method_for_source
405
имя пишется другим методом
computed_source
409
имя вычисляется
DELETE /data/{name}
Удаляет пользовательский набор или один его вариант (lang); с dry_run возвращает would_delete. Из системных удаляются только css и css.variables — возвращаются к оформлению темы.
системное имя не удаляется; меню опустошают PUT с {"items": []}
GET, PUT /data/settings/{field}
Настройки сайта по одному полю. GET /data/settings отдаёт все поля, GET /data/settings/{field} — одно, PUT /data/settings/{field} с {"value": …} записывает.
Поле
Значение
name
строка
icon
id картинки; 0 или null убирает
closed
true или false
front_page
id или путь опубликованной страницы; с lang — главная языка
languages
только чтение; запись — PATCH /data/site.languages
metrika
номер счётчика, "auto" или null
ga
G-XXXXXXXXXX, "auto" или null
gsc
код подтверждения или тег целиком, "auto" или null