Документация

Журнал запросов

Что магазин записывает о каждом запросе, сколько хранит, как прячет пароли и как найти нужный запрос по коду.

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

Магазин записывает каждый запрос к API в журнал. По журналу владелец видит, кто и когда подключался, а когда что-то не работает, может открыть запрос с ошибкой и посмотреть, что прислали и что ответил магазин.

Где журнал

В панели откройте «Настройки платформы», в группе «Платформа» выберите «API магазина». Под списком ключей стоит пункт «Журнал запросов» с подписью «За последние 30 дней».

Журнал видят сотрудники с правом «Выдавать ключи API», то же право открывает и сами ключи.

Что записывается

Магазин записывает каждый запрос к адресам /api/v1, удачный и неудачный, в том числе запросы без ключа и с неверным ключом. Не записываются только запросы к описанию API /api/v1/openapi.json. В строке журнала видно:

Что Пример
статус ответа 200, 403 (ответы с ошибкой выделены цветом)
метод и адрес GET /api/v1/shop
ключ название ключа или «Ключ неизвестен»
время запроса 17.10.2026, 14:27
сколько магазин отвечал 38 мс
код обращения G7PHUMGK

Адрес записывается без параметров: GET /api/v1/tax_rates?limit=2 попадёт в журнал как GET /api/v1/tax_rates. Кроме того, магазин хранит IP-адрес, с которого пришёл запрос.

«Ключ неизвестен» стоит у запросов, в которых ключа не было или он неверный, и у запросов ключей, которые потом удалили. Так же записываются запросы прежнего ключа после выдачи нового или смены контакта и запросы ключа, который удалили вместе с его контактом: такой ключ магазин уже не узнаёт. Если ключ отозван, у него истёк срок или запрос пришёл с чужого адреса, запрос записывается под названием ключа, поэтому причину отказа легко найти по названию.

Не записываются отказы «слишком много запросов» (429) без распознанного ключа. Такие ответы обычно получает перебор ключей или бот, и журнал от них только разрастался бы. Не попадают в журнал и ответы, которые магазин даёт ещё до того, как запрос дошёл до API: пока магазин закрыт на обслуживание и когда тело запроса слишком большое.

Тела запросов и ответов

У успешных запросов магазин хранит только строку журнала, без тела. Тело запроса и ответ магазина сохраняются у запросов с ошибкой, то есть со статусом 400 и выше, и только если ключ распознан. Каждое тело обрезается до 4000 знаков. У запросов POST /orders и POST /orders/check предел больше, 64 000 знаков, чтобы непринятый заказ даже на сотню позиций сохранился в журнале целиком.

Чтобы открыть тело, нажмите на строку запроса с ошибкой. Под ней появятся два блока: «Запрос» с тем, что прислали, и «Ответ магазина». JSON показывается с отступами.

Как хранится тело запроса:

  • JSON с паролями и ключами хранится с этими полями под звёздочками, остальное как пришло;
  • JSON, в котором скрывать нечего, хранится ровно так, как его прислали, без пересборки;
  • JSON с ошибкой разметки и обычный текст хранятся как пришли, чтобы было видно, что именно отправили;
  • данные HTML-формы (application/x-www-form-urlencoded) сохраняются как JSON с паролями под звёздочками;
  • файлы и формы с файлами (multipart/form-data) не сохраняются, вместо них стоит пометка «[файлы и поля формы не сохраняются]» на языке запроса.

Заголовки запроса в журнал не попадают вовсе, поэтому ключ из Authorization там не виден никогда.

Какие поля прячутся

Значение поля заменяется на ***, если в имени поля встречается одно из слов: secret, passw, token, api_key (или api-key, apikey), private_key, access_key, credential, authoriz, signature, cookie, session, card_number, cvv, cvc. Регистр букв не важен.

Короткие слова pwd, pass, otp, pin, key и auth прячут поле, если стоят в его имени отдельным словом через _ или -: user_pwd, sms-otp, key. Слова pwd, pass, otp и pin прячут поле и тогда, когда стоят в конце имени: userPwd, smsOtp.

Поля прячутся на любой глубине вложенности. Пример тела, которое пришло в журнал:

{ "url": "https://crm.example.ua", "secret": "***", "nested": { "password": "***" } }

Как найти нужный запрос

Сверху журнала два фильтра и поле поиска:

  • по ключу: «Все ключи» или конкретный ключ, список ключей можно искать по названию;
  • по исходу: «Все запросы», «Успешные» или «С ошибкой»;
  • поле «Код обращения».

Новые запросы стоят первыми. Журнал загружается по 30 строк, следующие открывает кнопка «Показать ещё».

Если разработчик прислал код из request_id или X-Request-Id, впишите его в поле «Код обращения» и нажмите Enter. Журнал покажет запрос с этим кодом, если он подходит и под выбранные фильтры. Регистр букв не важен, но код нужен целиком: по его части запрос не найдётся. Код также стоит в конце каждой строки журнала, после времени и длительности запроса.

Если запрос закончился ошибкой 500, подробности о ней записаны ещё и в журнал ошибок магазина. Откройте «Система → Журналы» и найдите запись по тому же коду.

Сколько хранится журнал

Журнал хранит записи 30 дней. Более старые записи магазин удаляет сам каждую ночь. Для этого должен работать планировщик, без него очистка не запускается (см. «Обслуживание: одна строка cron»).

Если удалить ключ, его записи останутся в журнале до конца срока хранения, но под пометкой «Ключ неизвестен».

Последний запрос в карточке ключа

Отдельно от журнала магазин помнит у каждого ключа время и IP-адрес последнего запроса. В карточке ключа они видны в строке «Последний запрос», а в списке ключей под названием стоит только время. Отметку обновляют лишь запросы, которые магазин пропустил, а отказы во входе её не меняют. Обновляется она не чаще раза в минуту, поэтому может отставать от журнала на минуту.

Обновлено 21 октября 2026