Данные приложения
Данные приложения живут в двух местах. Правки посетителя приложение хранит в localStorage его браузера, а общие данные для всех посетителей лежат в данных сайта — их фрейм приложения выводит при сборке страницы.
Записывает данные сайта владелец токена, то есть вы или ваш агент, запросом PUT /data/{name}. После записи OnPress сам пересобирает страницу приложения, и все посетители видят новые данные.
Во всех примерах API — https://onpress.pro/api/v2, SITE — id сайта (SITE_ID), OP_TOKEN — токен op_XXXX. Эндпоинты данных — в справочнике «Данные».
Данные в браузере
Демо хранят доску, таблицу, черновики счетов и историю распознаваний в localStorage. Данные переживают перезагрузку страницы, но живут в одном браузере на одном устройстве, а очистка данных браузера их стирает. Чтобы перенести их на другое устройство, приложению нужен экспорт и импорт файлом: так канбан выгружает доску в JSON, а таблица — книгу в XLSX.
Данные сайта в приложении
Фрейм приложения читает данные сайта теми же средствами, что и любой фрейм: повторитель onpress/repeat выводит элементы набора, а бинды подставляют их поля в атрибуты. Скрипт приложения потом читает готовую разметку. Например, фрейм дашборда выводит набор dashboard_stats строками с атрибутами data-*:
<ul class="dash__source" hidden>
<!-- onpress/repeat {"source":"dashboard_stats"} -->
<li data-op-bind='{"data-date":"item.date","data-visits":"item.visits"}'></li>
<!-- /onpress/repeat -->
</ul>
Скрипт фрейма собирает строки запросом document.querySelectorAll('.dash__source li') и строит по ним график. Набор без страничных токенов попадает в статическую копию страницы, поэтому сайт отдает страницу без запросов к API.
Записать данные
Обновите набор запросом PUT /data/{name}: он создает пользовательский набор или заменяет его целиком, а затем пересобирает фреймы, которые его читают. Например, агент записывает цифры для дашборда:
curl -s -X PUT "$API/site/$SITE/data/dashboard_stats" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"items": [{"date": "2026-10-28", "visits": 412}, {"date": "2026-10-29", "visits": 437}]}'
Набор — до 512 КБ. Отдельный элемент меняет точечная правка PATCH /data/{name}, а ?dry_run=1 показывает результат без записи.
Запись из приложения
Скрипт приложения в браузере посетителя в данные сайта не пишет. API принимает только токен op_ и сессию консоли, а токен дает все права владельца на всех его сайтах, поэтому токен в скрипте фрейма увидит любой посетитель. Не кладите токен во фрейм. Общие данные для приложения обновляет агент или ваш сервер, у которого токен лежит в секрете.
Вопросы и ответы
Как сделать общую доску для команды?
Пусть доску ведет агент. Он читает и пишет набор PUT /data/{name} по вашим поручениям, а фрейм выводит набор всем, кто открывает страницу. Правка с самой доски в браузере в набор не попадет.
Есть ли у приложения своя база данных?
Нет. У приложения есть localStorage браузера и пользовательские данные сайта — именованные JSON-списки до 512 КБ.
Видит ли посетитель данные сайта, которые выводит приложение?
Да. Все, что фрейм вывел в разметку, видно в коде страницы, поэтому закрытые данные выводите только на закрытой странице.