Skip to content

Latest commit

 

History

History
130 lines (114 loc) · 7.21 KB

marks.md

File metadata and controls

130 lines (114 loc) · 7.21 KB

Оценки

Оценки посетителя

Запрос

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,                               # средний балл по ним
          },
          ...
        ], 
      },
}

Сокращенный вывод и фильтр по id

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,             # проклассификацировано или нет юзером
      },
      ...
    ],
}