Noter: API и эксплуатация

Noter — CLI отправитель заметок, а не приложение-хранилище. Требуются PHP 8.2+ и ext-curl. Команда noter <text> берёт текст из аргумента; при отсутствии аргумента читает stdin.

Контракт приёмника

CLI выполняет HTTP POST на NOTER_URL и отправляет:

Часть запросаЗначение
Content-Typeapplication/json
Заголовок авторизации приложенияX-API-KEY: <NOTER_KEY>
JSON body{"content":"..."}

Перед JSON-кодированием Noter HTML-экранирует содержимое, чтобы приёмник мог безопасно вставить строку в HTML; контракт backend должен это учитывать. Приёмник обязан сравнить ключ безопасным способом, ограничить размер body, проверить UTF-8/формат и сохранить данные. Не возвращайте заметку как доверенный HTML.

Конфигурация и результаты

Установщик сохраняет NOTER_URL и NOTER_KEY в /usr/local/noter/noter.zconf, каталог с правами 0700, файл с 0600. CLI сначала ищет noter.zconf в BASE_PATH установленного приложения/сборки, затем использует /usr/local/noter/noter.zconf. Удалённые URL должны использовать HTTPS. URL допускает только HTTP(S); connect timeout — 5 секунд, общий timeout — 20 секунд. Выходной код успешен только для HTTP 2xx. При транспортной ошибке сообщение не включает URL/ключ; HTTP status выводится в терминал.

Передача -k при установке может раскрыть ключ через shell history и список процессов. Предпочитайте скрытый интерактивный prompt или защищённый конфигурационный менеджер; не помещайте секреты в README, аргументы, CI logs и issue reports.

Зависимости и release

Текущий lock фиксирует localzet/http 2.0.2 и localzet/server 4.5.3. Опубликованный HttpClient tag рассчитан на Server 4; этот проект пока не мигрирован на Server 7. Сначала требуется совместимый стабильный HTTP client, затем отдельная проверка API и обновление Noter. CI проверяет Composer manifest/lock, lint, PHAR и loopback HTTP сценарии; release BIN дополнительно скачивает bundled PHP runtime с внешнего CDN, поэтому локальная CI сборка не подтверждает доступность CDN.