Перейти к документации
ДокументацияЭкспорт журнала

Экспорт журнала

Скачайте подписанный журнал в формате JSON Lines или получайте выбранные события по мере появления.

На этой странице

Каждый вызов, решение и изменение попадает в ваш журнал. Забирайте полную копию когда угодно, для SIEM или архива.

Скачайте из консоли

Откройте раздел История вызовов и нажмите «Скачать журнал». В файле вся цепочка вашей организации. Скачивать могут владельцы, а также администраторы и аудиторы всей организации, у которых нет более узкой роли ни в одном рабочем пространстве. Администратор или аудитор одного рабочего пространства скачать журнал не может, как и администратор организации, который в пространстве одного клиента только участник или гость. Прочитать журнал на экране можно на вкладке «Журнал» рядом: каждая запись, кто её сделал и к чему она относится. Каждый видит записи тех пространств, где он владелец, администратор или аудитор, и записи самой организации.

Скачайте скриптом

Скрипт входит по ключу API консоли. Владелец создаёт его в разделе Ключи API кнопкой «Новый ключ API», ключ показывается один раз. Сохраните его в SALLYPORT_CONSOLE_KEY:

Вставьте ключ после запуска команды; на экран он не выводится
read -rs SALLYPORT_CONSOLE_KEY && export SALLYPORT_CONSOLE_KEY
Вся цепочка одним файлом
curl --fail --silent --show-error -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" "https://mcp.sallyport.cloud/v1/audit/export" -o sallyport-audit.jsonl

Чтобы взять диапазон, добавьте from_seq и to_seq. Оба параметра целые числа от нуля, обе границы входят в выгрузку. Без to_seq файл идёт до конца цепочки.

Всё начиная с записи 1001
curl --fail --silent --show-error -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" "https://mcp.sallyport.cloud/v1/audit/export?from_seq=1001" -o sallyport-audit-1001.jsonl

Чтобы забирать только новое, прочитайте to_seq в первой строке прошлого файла и начните следующую выгрузку со следующей записи. Если events равно 0, нового нет: позже запросите снова с тем же from_seq.

По умолчанию Sallyport хранит журнал 180 дней, поэтому забирайте его хотя бы с такой частотой. Срок меняет поле «История вызовов и журнал (дни)» в разделе Настройки, «Организация». Сессия консоли работает с тем же маршрутом по адресу https://my.sallyport.cloud/api/v1/audit/export.

Что внутри файла

Заголовок ответаЗначение
Content-Typeapplication/x-ndjson; charset=utf-8
Content-Dispositionattachment; filename="sallyport-audit-{UUID организации}.jsonl"
Cache-Controlno-store
X-Content-Type-Optionsnosniff

Первая строка описывает файл: schema (spc-chain/2), tenant_id, from_seq, to_seq и events. Каждая следующая строка содержит одну запись по порядку: seq, occurred_at, kind, payload, prev_hash, this_hash, sig и signer_kid.

Каждая запись хранит хеш предыдущей, поэтому пропавшая или изменённая строка рвёт цепочку. Все записи подписаны Ed25519, публичные ключи лежат по адресу https://mcp.sallyport.cloud/.well-known/sallyport-audit-keys.json и открыты без учётной записи.

Сравните число строк с events, чтобы заметить оборванную загрузку. В файле нет значений ключей, тел запросов и полных списков аргументов.

Получайте события сразу

Вебхук отправляет на ваш HTTPS-адрес каждую новую запись журнала выбранных видов, примерно в течение минуты. Добавляет его владелец или администратор в разделе Вебхуки настроек: нажмите «Добавить вебхук», введите адрес и отметьте события. Скрипт делает это через API:

Вебхук для вызовов и решений
curl --fail --silent --show-error -X POST -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" -H "Content-Type: application/json" -d '{"url": "https://siem.example.com/sallyport", "events": ["call.intent", "call.result", "approval.decided"]}' "https://mcp.sallyport.cloud/v1/webhooks"

Секрет подписи показывается один раз: в консоли после «Добавить вебхук» и как secret в ответе API. Каждая доставка приходит POST-запросом с заголовками X-Sallyport-Event, X-Sallyport-Delivery и X-Sallyport-Signature: t=<unix seconds>,v1=<hex>.

Проверяйте v1 как HMAC-SHA256 от <t>.<body>, где ключом служит весь секрет. В теле лежат delivery_id, tenant_id, kind, occurred_at, seq, this_hash и payload.

  • Отвечайте статусом 2xx. Неудачную доставку Sallyport повторяет, удваивая паузу начиная с 5 секунд, всего 8 попыток. Примерно через 15 минут доставка помечается как неудачная.
  • У повторов тот же X-Sallyport-Delivery, по нему отбрасывайте дубли.
  • Вебхук доставляет то, что его создатель может читать в журнале: записи пространств, где он владелец, администратор или аудитор, и записи самой организации. Пока ему не видно ничего, вебхук ничего не доставляет, и эти записи потом не досылаются. Вебхук, созданный ключом API, доставляет весь журнал.
  • Вебхук начинает с момента создания. Старые записи берите из экспорта: seq и this_hash совпадают с его строками.
  • Названия событий совпадают со значениями kind в журнале, например call.intent, call.result, approval.requested, approval.decided, grant.created и access_request.created. Подходит любой kind из выгрузки. Неизвестное название отклоняется при создании вебхука, и ошибка его называет.
  • Кнопка «Доставки» в строке вебхука показывает, что было отправлено, а «Отправить ещё раз» повторяет неудачную доставку. В API это GET /v1/webhooks/{id}/deliveries и POST /v1/webhooks/{id}/deliveries/{delivery_id}/retry.
  • Список в разделе Вебхуки отмечает вебхук, который не доставляет. Переключатель в строке выключает доставку, не удаляя вебхук.