Запрос
GET /user/{id}/marks?page={page}&sort={mark|name|autor|date|year}&type={all|novel|story}
Параметры
id - id пользователя
page - страница (необязательный; по-умолчанию 1). Запрос с пагинацией, отдает по 200 оценок на странице
sort - вариант сортировки (необязательный; по-умолчанию mark)
* mark - по оценке (высокие вначале) (default)
* name - по названию произведения (по алфавиту)
* autor- по автору произведения (по алфавиту)
* date - по дате выставления оценки (новые - сверху)
* year - по году выхода произведения (новые - сверху)
type - фильтр по типам произведений
* all - все (default)
* novel- только романы
* story- только повести, рассказы
Пример
/user/1/marks?page=1&sort=date&type=novel - с 1 по 200 оценки (по убыванию даты выставления) creator'а, только романы
Ответ:
{
total_count: Int, # общее количество оценок с учетом фильтра типов (all|novel|story) - для пагинации
items: [ # список оценок
{
mark_id: Int, # id оценки
mark_date: DateTime, # дата-время выставления оценки ("2016-10-28 15:23:44")
mark_date_iso: DateTime, # дата-время выставления оценки в формате ISO 8601 ("2016-10-28T15:23:44+03")
mark: Int, # оценка произведению, данная вместе с отзывом (1-10)
work_id: Int, # id произведения
work_author: String, # автор(ы) произведения (на русском)
work_author_orig: String, # автор(ы) произведения (на языке автора)
work_name: String, # название произведения (на русском)
work_name_orig: String, # название произведения (на языке написания)
work_year: Int, # год публикации
work_type: String, # тип произведения
work_type_id: Int, # id типа произведения
work_image: Url|null, # обложка/постер произведения
user_id: Int, # id пользователя
user_name: String, # login
user_sex: Int, # пол: m - мужской, w - женский
user_avatar: Url, # аватарка пользователя
user_work_response_id: Int, # id отзыва юзера на это произведение (если отзыв написан)
user_work_classif_flag: Boolean, # признак наличия классификации юзером на это произведение
},
...
],
}
GET /user/{id}/marks/extended
в расширенной информации о произведении добавляются поля:
user_stat - статистика юзера о его оценках
Пример
/user/1/marks/exdented - вывод отзывов со статистикой
Ответ:
{
... все поля обычных отзывов посетителя и добаляются новые: ...
user_stat: # юзерская статистика по оценкам
{
marks_count: Int, # кол-во всего оценок (без учета фильтра)
classif_count: Int, # кол-во классифицированных произведений
marks_stats_marks: [ # кол-во оценок по баллам
{
mark: Int, # оценка (от 1 до 10)
mark_count: Int, # количество данных оценок
},
...
],
marks_stats_works: [ # кол-во оценок по типам произведений
{
work_type: String, # тип произведения
work_type_id: Int, # id типа произведения
mark_count: Int, # кол-во оценок этого типа произведений
mark_avg: Float, # средний балл по ним
},
...
],
},
}
GET /user/{id}/marks?w={work_ids}&mini=1
для вывода оценок юзера на конкретные произведения предлагается исспользловать дополнительную фильтрацию по work_id:
work_ids - список запрашиваемых произведений (work_id через запятую)
mini - режим мини-данных: выводятся только work_id, user_id, оценка
Пример
/user/1/marks?w=1,92&mini=1 - вывод оценки для work_id 1 и 92 в режиме mini
Ответ:
{
total_count: Int, # общее количество (равно кол-во эллементов отдающихся в массиве items)
items: [ # список оценок
{
mark: Int, # оценка произведению, данная вместе с отзывом (1-10)
work_id: Int, # id произведения
work_type_id: Int, # id типа произведения
user_id: Int, # id пользователя
user_work_response_id: Int, # id отзыва юзера (если он есть)
user_work_classif_flag: Boolean, # проклассификацировано или нет юзером
},
...
],
}