#Ошибки
Любой отказ выглядит одинаково:
{"ok": false, "error": "Справочника нет."}| Код | Когда |
|---|---|
200 | всё в порядке |
201 | запись заведена |
401 | ключа нет или он не годится |
403 | не сошлась подпись (у оплаты, не у API) |
404 | нет такого справочника или записи; либо API выключен |
422 | в теле нет ни одного известного поля |
#Что чаще всего идёт не так
401 при верном ключе. Заголовок должен быть `Authorization: Bearer
<ключ> или X-Api-Key: <ключ>`. Ключ в адресе не принимается вовсе.
Проверьте заодно, не отозван ли он — в списке ключей
это видно.
PATCH отвечает 200, а запись не изменилась. Почти всегда —
пропущенный завершающий слеш. Веб-сервер перенаправляет адрес без
слеша, а клиенты повторяют перенаправленный запрос методом GET и без
тела: ответ приходит успешный, но это ответ на чтение.
неверно /api/v1/lists/4/records/138
верно /api/v1/lists/4/records/138/404 на любом адресе, включая перечень справочников. API в этой
сборке ядра отсутствует — обновите систему: Настройки → Обновление
системы.
422 «Нечего записывать». Ни один ключ присланного объекта не
совпал с кодом поля справочника. Сверьтесь с
/fields/: в ответе приходят именно коды, а не
подписи полей, — phone, а не «Телефон».
Поле пришло, а в записи пусто. Смотрите skipped в ответе. Скорее
всего это id, domain — их задаёт сайт — либо значение было массивом
или объектом.
Отдаётся то, чего нет на сайте. По умолчанию API отдаёт всё,
включая черновики. Витрина — это published=1.
Записал через API, на сайте старое. Кеш страниц сбрасывается сам при записи. Если старое всё же держится, дело обычно в кеше на стороне браузера или в CDN перед сайтом.
#Где смотреть, что происходило
| Где | Что видно |
|---|---|
| Ключи API | когда ключом пользовались в последний раз |
| Журнал событий сайта | api_record_created, …_updated, …_deleted |
| Журнал веб-сервера | коды ответов и адреса запросов |
Тела запросов не сохраняются нигде: в них могут быть чужие персональные данные.