Журнал запитів
Що магазин записує про кожен запит, скільки зберігає, як ховає паролі та як знайти потрібний запит за кодом.
На цій сторінці
Магазин записує кожен запит до 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-адресу останнього запиту. У картці ключа їх видно в рядку «Останній запит», а в списку ключів під назвою стоїть лише час. Позначку оновлюють тільки запити, які магазин пропустив, а відмови у вході її не змінюють. Оновлюється вона не частіше ніж раз на хвилину, тому може відставати від журналу на хвилину.