Логика выполнения сложных запросов при ошибках

Каждая часть запроса может вернуть ошибку. Также и весь запрос может вернуть ошибку (в том числе псевдо-ошибку о необходимости ввести captha: 101028).
Весь запрос возвращает ошибку в двух случаях:

  • Некорректный JSON на входе.

  • Тотальное разрушение серверного ПО, в результате которого штатная обработка запросов невозможна в принципе.

  • Требуется captcha-проверка для текущего пользователя (ошибка 101028).

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

При обнаружении ошибки в запросе «на изменение» (префикс w_) все последующие запросы (в т. ч. запросы на получение текущего состояния) автоматически возвращают ошибку без каких-либо попыток их обработать. Все запросы, выполненные до ошибки, отработают, изменения будут внесены (что, в частности, означает, что порядок w_ запросов имеет значение).

При обнаружении ошибки в запросе текущего состояния (префикс r_) данный запрос возвращает блок с сообщением об ошибке. Никакого влияния на соседние запросы это оказывать не должно.

Сообщение об ошибках в ответе сервера

В ответе на любой запрос на изменения сервер возвращает признак успешности. Для простых действий это будет единственный ответ сервера:

"Act1": {
  "success": true
}

В случае возникновения ошибки сервер вернет "success": false и всегда снабдит ответ двумя дополнительными полями error_message и error_code, например:

"GetDat3": {
  "success": false
  "error_message": "Некорректные параметры вызова", 
  "error_code": 101001
}

Запросы на получение текущего состояния в случае успеха никак не помечают данные, но в случае ошибки вернут то же самое, что и запросы на изменение (см. пример выше).

Стандартные ошибки

Любой запрос (и на изменения, и на получение данных) может вернуть следующие стандартные ошибки:

error_code

error_message

Описание

101000

Некорректный SID

В запросе отсутствует обязательный параметр sid или он уже не валиден. Для получения актуального SID'а используйте запросы авторизации (w_create_sid), авторизации через соцсеть (w_authorise_socnet) или регистрации (w_register_user).

101001

Некорректные параметры вызова

В запросе передан некорректный параметр, отсутствуют обязательные параметры или передано недопустимое значение параметра.
Например, в запросе на регистрацию (w_register_user) в параметре birth_date передана дата в формате, отличном от ISO (1999-12-21). Или в запросе на авторизацию (w_create_sid) вместо pwd передан параметр cur_pwd.
Также подобная ошибка возникает, когда размер переданного JSON превышает 1 мегабайт или когда система в принципе не смогла распарсить полученный JSON.

101002

Неизвестная функция

В запросе передан параметр, не поддерживаемый системой.
Например, в запросе на изменение данных пользователя (w_update_user_data) вместо nickname был передан параметр nick.

101003

Внутренняя ошибка сервера

На стороне сервера ЛитРес произошла внутренняя ошибка. Попробуйте повторить запрос через некоторое время.

101004

Сервис временно недоступен

Работа API временно приостановлена. Попробуйте повторить запрос через некоторое время.

101005

Функция недоступна данному пользователю

В запросе вызвана функция, недоступная для текущей учетной записи пользователя.

101016

Функция недоступна данному партнеру

В запросе вызвана функция, недоступная для текущей учетной записи партнера.

101017

В запросе указано некорректное время

В запросе указано время time, отличающееся от серверного более чем на ±10 минут.

101018

Выполнение прервано, запрос не обрабатывался

Данный запрос входил в группу запросов и не был обработан, т. к. в одном из обработанных ранее запросов произошла ошибка.
Например, в групповом запросе была авторизация и подписка на серию книг. И т. к. при авторизации была допущена ошибка в пароле, то запрос на подписку даже не начнет выполняться.

101019Некорректное значение параметра

error_message может быть разный, но смысл один: передан не валидный параметр. Причины могут быть разные.

101043

Некорректный ID приложения

В запросе отсутствует или имеет некорректное значение ID партнерского приложения (параметр app).

101046

Некорректная SHA-подпись

В запросе в параметре sha должен содержаться хеш SHA-256, формируемый индивидуально для каждого из запросов:

$sha=Digest::SHA::sha256_hex($time.$secret_key)

101028

Требуется пройти captcha-тест

С вашего IP наблюдается подозрительная активность, требуется пройти проверку, что приложение не бот и за ним стоит живой пользователь.

101116

unknown language

Указанный в параметре uilang язык не поддерживается, либо язык указан не в стандарте ISO 639-2.

101050

Некорректный формат запроса

Ошибка возникает, когда в POST-запросе отсутствует поле jdata с JSON запроса или JSON не валиден. Ошибка возникает и в том случае, если размер переданного JSON превышает 1 мегабайт.