"ЛитРес" предоставляет простой, основанный на HTTP и XML, API, позволяющий любой программе:
--
Получать список авторов и жанров, размещенных на сайте "ЛитРес";
--
Получать содержимое каталога "ЛитРес" (названия книг, аннотации, обложки и т.п.) полностью или с фильтрацией по заданным параметрам;
--
Скачивать ознакомительные фрагменты книг;
--
Авторизоваться на сайте "ЛитРес" используя логин и пароль пользователя, действовать от имени этого пользователя;
--
Запрашивать состояние счета пользователя, покупать книги;
--
Скачивать с "ЛитРес" приобретенные пользователем книги в формате fb2;
--
Пополнять счет пользователя (потребуются функции браузера);
--
Манипулировать с корзиной на сервере;
--
Сохранять и получать закладки, заметки и выделения в тексте;
--
Получать долю со всех продаж, осуществленных программой-клиентом с использованием этого API.
Важноезамечание
Эта документация не предназначена для партнеров, разрабатывающих собственные магазины. API создано исключительно для разработчиков, создающих клиентское ПО для работы с каталогом ЛитРес. Если вы создаете партнерский магазин - не пользуйтесь этим API, оно предназначено не для вас!
Скачайте документацию по подключению партнеров со следующего URL:
"ЛитРес" готов сотрудничать с любыми разработчиками на основании партнерских условий, описанных на сайте "ЛитРес" по адресу http://www.litres.ru/pages/cms/?page=635. Заявку на партнерство можно оформить через стандартный интерфейс по адресу http://www.litres.ru/pages/reader_partner/ (укажите в комментарии, что вы будете разрабатывать ПО, желательно предоставить дополнительную информацию).
Например, при подключении по схеме "10% за два дня" партнер получит на свой счет 10% от стоимости всех покупок пользователей через его ПО и еще 10% от суммы всех покупок, которые данный пользователь совершит вне его программы в следующие 48 часов после покупки.
О том, как регистрировать покупки пользователей на определенного партнера подробно смотрите раздел 10.1 (конкретно параметр lfrom в запросе на покупку).
ОбщаяинформацияпоработеAPI
--
Работа с API сервера "ЛитРес" для любой программы-клиента строится по схеме запрос-ответ: клиент формирует и передает запрос, сервер в ответ возвращает XML-документ с ответом;
--
Все запросы от клиентов к серверу "ЛитРес" осуществляются на сервер robot.litres.ru по протоколу HTTP (1.0, 1.1) или HTTPS, для передачи параметров используется метод POST. При формировании поисковых запросов следует кодировать строки запроса в UTF-8 (!);
--
Если не оговорено иное, все ответы сервера передаются в виде XML, сжатого по алгоритму gzip (о чем сообщает стандартный заголовок HTTP-ответа Content-Encoding: gzip);
--
XML в ответах сервера всегда имеет кодировку UTF-8 (о чем сообщает HTTP-заголовок Content-type: text/xml; charset=utf-8);
--
В некоторых случаях клиент может и/или должен подключиться к серверу по стандартному HTTP, в обход API, например, для получения файла обложки в формате JPEG. Такие случаи оговариваются особо;
--
В некоторых случаях следует использовать только HTTPS. Такие случаи оговариваются особо;
--
XML, отдаваемый сервером ЛитРес может быть шире (и будет шире, по мере развития функционала), чем описано в данной документации. Приложение должно штатно обрабатывать избыточные или незнакомые узлы и/или атрибуты в XML. Все изменения, разумеется, обратно совместимы и то, что вы ожидаете найти, вы найдете в XML в том же виде на том же месте.
Авторы любых программ, добросовестно использующие данный API, могут рассчитывать на техническую и информационную поддержку со стороны "ЛитРес". По техническим вопросам обращайтесь на admin@litres.ru, по коммерческим на partners@litres.ru.
--
Регистрацияпользователя
--
Предостережение от повторных регистраций
Поскольку свободные деньги на счету клиента и уже купленные книги привязаны к акаунтам в "ЛитРес", авторам клиентов следует всеми силами избегать ситуации повторной регистрации пользователя, который уже имеет учетную запись на "ЛитРес". Повторные регистрации создадут очень серьезные неудобства и путаницу для пользователей, могут повлечь потери денег из-за повторных покупок и многие другие неприятности.
Пользователю ВСЕГДА следует первым делом предоставить возможность ввести имеющийся у него логин/пароль, а при необходимости, предложить восстановить забытый пароль (см. 4.1). И только если пользователь совершенно точно не имеет рабочего логина/пароля и/или категорически не может их восстановить, следует инициировать регистрацию.
Альтернативный метод состоит в том, чтобы по умолчанию авторизовать пользователя со сгенерированными автоматически данными, а впоследствии позволить ему поменять логин/пароль и автоматически объединить аккаунты (см. 2) в случае возникновения конфликта (см. ошибкой 1 в 1.4). Такая, чуть боле сложная, реализация, позволит предоставить пользователям комфортный сервис и при этом не создаст болезненных проблем. Без объединения авторегистрация недопустима.
--
Запрос на регистрацию
Для регистрации нового пользователя используется URL
--
new_login - логин, под которым пользователь хочет зарегистрироваться. Этот параметр является обязательным;
--
new_pwd1 - запрошенный пароль. Этот параметр является обязательным;
--
mail - e-mail пользователя. Это необязательный параметр, но если он не был указан (или является неверным), пользователь не сможет восстановить свой пароль (см. 4.1). Рекомендуется, по возможности, побуждать пользователя указывать его e-mail и/или информировать о рисках, связанных с отсутствием e-mail;
--
first_name - имя;
--
middle_name - отчество;
--
last_name - фамилия;
--
city - город;
--
phone - номер телефона;
--
www - адрес в интернет;
--
birth_day - дата рождения в ISO-виде 1999-12-21;
--
male - пол, может принимать значения m-мужчина, f-женщина.
Если в качестве логина (new_login) был указан e-mail и/или e-mail пользователя был указан в поле mail, то при регистрации новый пользователь:
--
Получает 10 книг бесплатно (видны в разделах "Мои покупки"/"Все мои покупки" http://www.litres.ru/pages/my_books/ сразу после регистрации), если при регистрации не был передан параметр no_present_booksсо значением 1;
--
Подписывается на уведомления по e-mail о новых произведениях авторов, книги которых он покупал.
Ответ сервера при успешной регистрации аналогичен ответу при успешной авторизации (см. 5.3), но, в отличие от авторизации, на указанный пользователем e-mail (параметр mail, см. 1.2) высылается подтверждение регистрации.
Ответ сервера включает новый уникальный SID клиента (@sid), а также ID и все регистрационные данные пользователя (@user-id, @first-name,@last-name и т.д.) и статистические данные по количеству книг, авторов и пользователей.
@user-id (ID пользователя) используется для отслеживания рецензий пользователя (см. 12), а также для журнализации взаимодействия пользователя с новостями и уведомлениями (см. 24.2).
Также, если в запросе были заданы параметры app и (опционально) d, то в ответе сервера будет содержаться узел @not_read,в котором в виде целочисленного числа будет содержаться количество полученных, но не прочитанных пользователем новостей (пуш-уведомлений).
--
Ответ сервера в случае ошибки регистрации
Если при регистрации пользователя произошла ошибка (например, логин пользователя уже занят), сервер возвращает сообщение об ошибке:
<catalit-registration-failed error="1" coment="Login is in use"/>
В атрибуте @coment словами описывается смысл ошибки, возможные значения атрибута @error приведены ниже:
--
1 - запрошенный логин уже занят;
--
2 - логин не указан;
--
3 - пароль не указан;
--
4 - e-mail некорректный;
--
5 - слишком много регистраций с этого IP, попробуйте немного позднее (10 минут должно быть достаточно);
--
6 - e-mail уже принадлежит другому пользователю;
--
7 - повтор пароля не совпадает с паролем;
--
8 - некорректный номер телефона;
--
9 - телефон уже принадлежит другому пользователю;
--
100 - прочие ошибки.
--
Объединение аккаунтов
--
Общая логика объединения аккаунтов
Если у пользователя имеется несколько аккаунтов на ЛитРес, их можно объединить. При этом все остатки на счетах и купленные книги суммируются и остаются на том аккаунте, от имени которого инициируется объединение. Второй же аккаунт, присоединяемый к текущему, будет полностью удален. Функция может оказаться особенно полезной в следующем сценарии:
Приложение автоматически регистрирует пользователя при запуске, создавая ему случайный логин/пароль и позволяя пользователю пользоваться магазином без дополнительных усилий по регистрации
В какой-то момент пользователь вспоминает, что у него уже есть учетная запись на ЛитРес и у него возникает потребность получить доступ ко всему принадлежащему ему контенту. В этот момент можно объединить аккаунты, в т. ч. "прозрачно" для пользователя, и он, просто введя уже существующие e-mail/пароль, получит вместо ошибки "такая учетная запись уже существует, переименование невозможно" нормально работающий объединенный аккаунт.
--
Запрос на объединение аккаунтов
Для обновления данных в профиле пользователя используется следующий URL:
Этот URL обрабатывает параметры полностью аналогично 1.2, за исключением того, что параметр new_pwd1 не является обязательным и если он опущен, пароль не изменяется. Если параметр не задан, то он сбрасывается.
--
sid- SID, идентифицирующий пользователя;
--
curpass - текущий пароль. При обновлении пароля и/или e-mail параметр является обязательным.
--
Ответ сервера в случае успеха обновления
<catalit-updateuser-ok/>
--
Ответ сервера в случае ошибки обновления профиля
В случае если при обновлении информации пользователя произошла ошибка (например, логин пользователя уже занят), сервер возвращает сообщение об ошибке. Коды ошибок аналогичны кодам ошибок в разделе 1.4.
<catalit-updateuser-failed error="1" coment="Login is in use"/>