Media Catalogue API

Статус документа

Оглавление

Введение

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

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

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

Сервис поддерживает неограниченный уровень вложенности для наборов медиа-контента.

В планах расширить возможности данного сервиса для замены существующих сервисов, таких как Media Guide, Films.

Термины и определения

В этом документе используются термины и определения, описанные в документах «О программных интерфейсах сервисов Инетры» и «Термины и определения».

Рубрикатор

Рубрикатор нужен для формирования коллекций при навигации пользователем по меню приложения или схожим по функциональности с ним элементам графического интерфейса.

Внимание на данный момент (версия 1.X):

  1. Приложение может осуществить выборку из медиа–каталога только с помощью рубрикатора. Других способов получить выборку сервис пока не предоставляет.
  2. Получение подробной информации об элементах каталога возможно только при помощи Media Guide.

Рубрикатор может быть различным в зависимости от:

Пример рубрикатора:

  1. «Популярное», опции рубрики:
  2. «Подборки», с подрубриками:
    1. «Чемпионат мира по хоккею»
    2. «Чемпионат мира по снукеру»
  3. «Рекомендации»
  4. «Поиск», опции:

Тот же рубрикатор для устройств с пультом дистанцинного управления может выглядеть так:

  1. «Популярное», с подрубриками:
    1. «За неделю»
    2. «За все время»
  2. «Подборки», с подрубриками:
    1. «Чемпионат мира по хоккею»
    2. «Чемпионат мира по снукеру»
  3. «Рекомендации»
  4. «Поиск», опции рубрики:

Структура рубрикатора

При выборе пользователем рубрики может быть осуществлена выборка из медиа–каталога.

Каждая рубрика может иметь опции, задающие дополнительные параметры выборки. Опции рубрики бывают следующих типов:

  1. Переключаемые. В каждый момент времени пользователь должен выбрать одно из имеющихся значений. Одно из значений должно быть помечено как значение по умолчанию.
  2. Требующие ввод. Приложение должно отобразить пользователю поле для ввода значения опции.

Корневые рубрики могут быть использованы для построения главного меню приложения, или разнесены по другим графическим элементам интерфейса. Так, роль главного меню в iOS может выполнять TabBar, при этом элемент поиска обычно располагается в верхней части интерфейса.

Рубрика может содержать дополнительную подсказку ui_hint о том, как отображать результаты выборки в приложении. Это также может помочь приложению реализовать ожидаемое поведение для имеющихся элементов графического интерфейса.

Например, в интерфейсе приложения «Популярное» и «Рекомендации» могут отличаться по детализации отображаемой информации о фрагментах, а «Поиск» требовать отображения дополнительного всплывающего окна.

Получение и интерпретация рубрикатора

Построение связи между графическим интерфейсом пользователя и рубрикатором должно производиться по следующему алгоритму:

  1. Отображается интерфейс пользователя.
  2. Отправляется запрос rubricator на получение рубрикатора.
  3. Для каждой корневой рубрики подбирается подходящий элемент графического интерфейса. Соответствие осуществляется на основе подсказки ui_hint, указанной в рубрике.
    1. Если подходящий элемент графического интерфейса приложения не был найден, рубрика игнорируется как неподдерживаемая.
  4. Если для какого-то элемента графического интерфейса не была найдена подходящая корневая рубрика, данная функциональность должна либо не отображаться, либо отображаться как недоступная на данный момент.
  5. Приложение запоминает полученную иерархию рубрикатора:
    1. Либо до времени, указанного в HTTP заголовке Expires ответа сервера,
    2. Либо до смены одного из параметров окружения: контрагента, территории, версии приложения,
    3. Иначе на 8 часов, после чего попытается обновить структуру рубрикатора с сервера.

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

Параметр ui_hint должен быть задан у всех корневых рубрик. Подрубрики наследуют это свойство от родительской рубрики, если не указано обратное.

Рассмотрим в качестве примера графический интерфейс приложения Peers.TV для iOS:

Слева изображено главное окно приложения, справа --- экран Хайлайты, открывающийся при переходе на одноименный пункт меню
Слева изображено главное окно приложения, справа — экран «Хайлайты», открывающийся при переходе на одноименный пункт меню

Сервер передает следующий рубрикатор (см. сообщение Rubricator):

{
  "items": [
    {
      "id": 1,
      "title": "Популярное",
      "ui_hint": 4,
      "options": [
        {
          "id": 100,
          "type": 0,
          "title": "Период",
          "values": [
            {
              "title": "За сегодня",
              "value": "today",
              "selected_by_default": true
            },
            {
              "title": "За неделю",
              "value": "week"
            }
          ]
        }
      ]
    },
    {
      "id": 2,
      "title": "9 мая",
      "ui_hint": 2
    },
    {
      "id": 3,
      "title": "Хайлайты",
      "ui_hint": 5,
      "subitems": [
        {
          "id": 30,
          "title": "Будь в курсе"
        },
        {
          "id": 31,
          "title": "Новости дня"
        }
      ]
    },
    {
      "id": 4,
      "title": "Поиск",
      "ui_hint": 1,
      "options": [
        {
          "id": 5,
          "type": 1
        }
      ]
    }
  ]
}

Приложение, получив данный рубрикатор, связывает нажатие на кнопке «Популярное» с рубрикой под идентификатором 1, из–за переданной подсказки ui_hint равной POPULAR.

Кнопка «Хайлайты» ассоциируется с рубрикой под идентификатором 3, при нажатии на которую ее подрубрики отображаются построчно, при нажатии на любую из строк должен отобразиться результат выборки медиа–каталога для выбранной рубрики.

Рубрика под идентификатором 4 будет проигнорирована, так как приложение (пока) не поддерживает поиск по выпускам передач.

Обработка выбора пользователем рубрики

При выборе пользователем (переходе на пункт меню, нажатие на элемент графического интерфейса и т.п.) рубрики приложение:

  1. Для всех опций выбранной рубрики: 1. Если опция имеет идентификатор, не встречающийся у вышестоящих рубрик, выставляется значения по умолчанию. 2. Если опция имеет идентификатор, встречавшийся у вышестоящей рубрики, выставляется уже выбранное значение опции.
  2. Если это предусмотрено в дизайне, опции отображаются в графическом интерфейсе.
  3. Все подрубрики отображаются согласно дизайну приложения.
  4. Если это не предусмотрено в интерфейсе приложения, следующее действие может не производиться, если у выбранной рубрики имеются подрубрики.
  5. С помощью метода select осуществляется выборка медиа–каталога по рубрике. Полученные фрагменты отображаются согласно дизайну для соответствующего значения ui_hint.

При изменении значения любой опции происходит переполучение выборки для выбранной рубрики, с последующим обновлением интерфейса приложения в соответствии со значением поля ui_hint.

Если это предусмотрено интерфейсом, для опций, требующих ввод, пользователю предлагаются возможные продолжения ввода, с помощью метода suggestions.

Из описанного алгоритма вытекают следующие ограничения:

  1. Различные рубрики не могут иметь одинаковых идентификаторов.
  2. Различные опции рубрик (с различным набором значений или различными заголовками значений) не могут иметь одинаковых идентификаторов.
  3. Опции могут иметь одинаковые идентификаторы тогда и только тогда, когда выполнены все условия:
    1. Совпадают типы опций,
    2. Совпадают множества значений,
    3. Для одинаковых значений используются одинаковые заголовки, отображаемые в интерфейсе,
    4. Совпадает значение по умолчанию,
    5. Рубрика, в которой опция описана только идентификатором, имеет вышестоящую рубрику с полным описанием опции.
  4. Для ссылки на опцию вышестоящей рубрики может быть использован только ее идентификатор.
  5. Некорректные рубрики и опции должны быть проигнорированы приложением.

Рассмотрим для примера следующий рубрикатор:

В данном случае подрубрики «Украина» и «Чемпионат мира по снукеру 2014» имеют одинаковую с вышестоящей рубрикой опцию «сортировка». При этом, если пользователь на экране рубрики «Интересно посмотреть» выбрал для опции «сортировка» значение «по дате выхода», она сохраняется и при переходе в подрубрики. Если значение опции «сортировка» в подрубрике было изменено, оно должно быть изменено и в вышестоящей рубрике, а получение выборки медиа–каталога произведено заново.

Заметим, что наличие для рубрики «Рекомендации» опции с идентификатором 1 было бы ошибкой и было бы проигнорировано приложением.

Передача значений выбранных опций рубрик

Параметры для методов select и suggestions передаются следующим образом:

  1. Числовой идентификатор выбранной рубрики, в параметре rubric.
  2. Выбранные значения опций — в параметре rubric_options, при этом кодируются следующим образом:
    1. Для каждой опции формируется строка, содержащая ее числовой идентификатор и через символ , — выбранное значение.
    2. Для переключаемых опций значение передается в поле value, для опций требующих ввод, используется введенная пользователем строка в кодировке UTF–8.
    3. Все вхождения в выбранное значение символов ,, ; и \ должны быть экранированы символом \, т.е. заменены на последовательности символов \,, \; и \\, соответственно.
    4. Все полученные строки конкатенируются через разделитель ;.

При обработке метода select сервер с помощью переданного параметра rubric определяет запрос, который необходимо выполнить в базе данных, а параметры запроса формирует из параметра rubric_options:

  1. Параметр rubric_options декодируется с помощью функции urldecode (PHP) или аналогичной.
  2. Массив значений получается путем разбивания полученной строки разделителем ; (последовательность \; при этом не считается разделителем).
  3. Полученный массив преобразуется в ассоциативный массив с помощью отделения ключа от значения символом , (последовательность \, при этом разделителем не является).
  4. Последовательности символов \\, \, и \; заменяются на символы \, , и ;, соответственно.

Продолжая пример с iPhone приложением, при выборе пользователем элемента «Популярное» приложение должно отправить запрос select с параметрами rubric=1 и rubric_options=100%2Сtoday, так как значением опции «Период» с идентификатором 100 по умолчанию является «За сегодня», что и будет отображено в интерфейсе:

Для передачи значений one,two для опции с идентификатором 1000 и zero;first\\ для опции с идентификатором 1001 будет использована следующая строка:

1000,one\,two;1001,zero\;first\\\\

Или в кодированном варианте:

rubric_options=1000%2Cone%5C%2Ctwo%3B1001%2Czero%5C%3Bfirst%5C%5C%5C%5C

Постраничная навигация в выборке

Классическая схема работы постраничной выдачи элементов организуется с помощью двух параметров, skip и count:

Параметр skip задает количество пропущенных элементов с начала выборки, а count — максимальное количество элементов в выборке. На языке SQL данный механизм реализуется с помощью ключевых слов LIMIT и OFFSET.

Результат может быть кэширован на стороне сервера, время жизни страницы выборки передается в поле ttl ответа.

Оконная навигация в выборке

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

В выборку добавились два фрагмента (с идентификаторами 16 и 7), приложение вместо ожидаемых новых фрагментов получило уже имеющиеся описания фрагментов с идентификаторами 9 и 11. При удалении выпусков из выборки возможны пропуски при переходе на следующую страницу:

Решение проблемы заключается в передаче дополнительных меток времени lower_mark и upper_mark, для первого и последнего элемента окна выборки соответственно.

Для получения элементов, находящихся «в будущем» относительно имеющегося окна выборки, клиент в параметре gt[1] передает значение upper_mark окна; для получения выпусков, находящихся относительно имеющегося окна выборки в прошлом в параметре lt[2] значение lower_mark.

Для получения выпусков, находящихся между метками времени клиент должен передать оба параметра, gt и lt, в которых указать нижнюю и верхнюю метки времени соответственно.

Для пополняемых выборок сервер сообщает количество элементов выборки, попавших в запрошенный диапазон, в параметре window_size. Если данное значение больше, чем выпусков в ответе, значит получены не все элементы выборки. Например:

В параметре count можно указать желаемое максимальное количество элементов выборки. Сервер может:

Замечания:

  1. Названия lower_mark и upper_mark являются условными. Так, при сортировке выборки в обратном порядке, значение lower_mark может быть большим, чем значение upper_mark. Работа со значениями на стороне приложения в таком случае не меняется.
  2. При смене рубрики или изменении значений опций рубрики в приложении должен производиться сброс всех известных значений нижних и верхних временных меток выборки.
  3. На стороне сервера данная технология реализуется следующим образом:
    1. Выбирается атрибут выпуска передачи (например, время добавления выпуска в сборник), по которому производится упорядочивание результатов выборки. Данный атрибут будем называть атрибутом сортировки выборки.
    2. Различные окна выборки должны содержать различные значения атрибута сортировки.
    3. Метка lower_mark заполняется значением атрибута сортировки для первого элемента результата SQL запроса, upper_mark — значением атрибута сортировки последнего элемента запроса.
    4. Для упорядочения в рамках одного окна выборки рекомендуется использовать дополнительный атрибут выпуска передачи, по которому производить сортировку, чтобы обеспечить одинакового результата выборок при повторных запросах. В качестве второго атрибута можно использовать, к примеру, идентификатор выпуска передачи.

Получение атрибутов элементов каталога

На данный момент в результате работы метода select Media Catalogue API возвращает лишь ограниченный набор атрибутов элементов каталога:

Тип Media Guide и идентификатор элемента позволяют приложению получить такие атрибуты элемента, как его название, описание, дату публикации и т.п.. Тип элемента из Media Guide определяет метод Media Guide API, к которому следует обратиться приложению для получения необходимых ему атрибутов.

У элементов существуют атрибуты, которые характерны только для конкретной выборки. К таким атрибутам относится, например, количество просмотров: это число зависит от параметров рубрики, определяющих расчетный период времени, за который учитываются просмотры.

Описание API

API работает по протоколу HTTP, корень доступа может быть получен из Регистратуры при помощи Registry API. API подразумевает доступ только аутентифицированного пользователя, использующего авторизованное приложение.

Запросы к API составляются следующим образом:

http://<path_to_api>/<api_version>/<method>.<format>?[params]

Где:

Значения всех параметров необходимо кодировать для предотвращения неоднозначной интерпретации так, как это рекомендуется в RFC3986.

Аутентификация

Для аутентификации пользователя клиент должен передать полученный ранее токен доступа, выданный Auth API контрагента, по схеме аутентификации в соответствии с типом токена.

Для авторизации по типу токена «Bearer» рекомендуется использовать HTTP заголовок Authorization, пример:

Authorization: Bearer 18dasd81230dah12032

Локализация

Каждый запрос к API позволяет получить описание контента на предпочитаемом пользователем языке. Для указания предпочитаемых языков необходимо в запросе использовать заголовок Accept-Language.

Общие параметры запросов

Для формировании ответа с учетом особенностей клиента, во все запросы необходимо включать следующие общие параметры:

параметр формат по умолчанию смысл
token строка отсутствует Токен доступа, полученный при помощи Auth API (устарело с версии 1.2)
t строка автоматически определенная Идентификатор территории из Регистратуры

Значение по умолчанию для территории определяется каталогом с помощью метода whereAmI Registry API. При помощи параметра t можно задать территорию, например, для получения для получения подборок в наиболее привычном виде.

Стандартные коды ответов

Для каждого метода API предусмотрены стандартные коды ответов (RFC2616). Ниже описана интерпретация некоторых кодов:

В случае кодов 401, 403 должен быть передан HTTP заголовок WWW-Authenticate с указанием ожидаемой схемы аутентификации и дополнительнной информации (если применимо). Например, для схемы «Bearer» может быть указан дополнительный атрибут error со значением:

Методы Catalogue API

rubricator — получение рубрикатора

Дополнительные параметры:

параметр формат по умолчанию смысл
rubric число отсутствует Идентификатор рубрики
count число отсутствует Максимальное количество подрубрик в выдаче
skip число 0 Смещение рубрик в выдаче

Если параметр rubric не передан, подразумевается запрос полного рубрикатора, иначе будет возвращена выбранная рубрика и ее подрубрики.

Формат ответа: сообщение Rubricator.

За сервером остается право ограничивать размер ответа. Для этого вместо выдачи полного рубрикатора могут быть использованы следующие техники:

select — получение выборки медиа–каталога

Дополнительные параметры:

параметр формат по умолчанию смысл
Получение элементов рубрики
rubric число отсутствует Идентификатор выбранной рубрики
rubric_options строка отсутствует Значения опций выбранной рубрики
Получение элементов каталога
id числа через , отсутствует Список идентификаторов элементов каталога
Навигация по выборке
gt строка отсутствует Нижняя отметка времени, для оконной навигации
lt строка отсутствует Верхняя отметка времени, для оконной навигации
skip число отсутствует Смещение выпусков в выборке, для постраничной навигации
count число отсутствует Желаемое количество выпусков передач
Фильтрация атрибутов
fields строка id, guide_type, selection_attributes список полей через , из сообщения CatalogueItem
Сортировка выборки
sort строка year Сортировка выборки по убыванию указанного параметра

Формат ответа: сообщение SelectionPage.

Способ кодирования параметров rubric и rubric_options описан в параграфе «Передача значений выбранных опций рубрик».

Параметры skip и count используются для рубрик с постраничной навигацией, в то время как gt, lt и count используются для рубрик с оконной навигацией по выборке, однако за сервером остается право уменьшить размер выборки на своей стороне (рекомендуемое ограничение — 200 элементов).

Независимо от переданного значения в параметре fields в выдаче для каждого сообщения CatalogueItem должно присутствовать поле id. Если параметр fields задан, то неуказанные в параметре поля (за исключением id) не должны попадать в выдачу.

Допустимые значения для параметра sort: year, season, episode, date.

Замечание: на данный момент (декабрь 2014) при использовании опции ввода введено ограничение на минимальную длину введенной фразы. При длине менее 3 символов будет возвращен HTTP код 400.

suggestions — получение подсказки для ввода

Дополнительные параметры:

параметр формат по умолчанию смысл
rubric число отсутствует Идентификатор выбранной рубрики
rubric_options строка отсутствует Значения опций выбранной рубрики

Способ кодирования параметров rubric и rubric_options описан в параграфе «Передача значений выбранных опций рубрик».

Формат ответа: сообщение RubricSuggestions.

параметр формат по умолчанию смысл
rubric число отсутствует Идентификатор рубрики
Представление данных
profile строка web желаемый профиль изображения
strict true, false false возвращать логотип только при точном соответствии параметров представления
resolution WIDTHxHEIGHT отсутствует желаемое разрешение

Данный метод производит перенаправление на адрес запрашиваемого ресурса. Получение логотипов в формате, отличном от PNG, не предусмотрено.

ВНИМАНИЕ: метод logo не требует аутентификации пользователя.

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

Поддерживаемые значения для параметра profile:

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

При указании параметра strict со значением true сервер должен вернуть HTTP код 404 с пустым телом ответа, если логотип с запрашиваемыми параметрами представления не найден.

Спецификация API для Protocol Buffers

CatalogueItem — элемент каталога

MediaGuideType — тип элемента каталога из Media Guide API

enum MediaGuideType {
    CHANNEL = 1;
    BROADCAST = 2;
    FRAGMENT = 3;
    MOVIE = 4;
    SERIES = 5;
}

Описание значений:

MediaGuideType значение[3]
CHANNEL канал
BROADCAST передача
FRAGMENT фрагмент
MOVIE фильм
SERIES сериал

CatalogueItemSelectionAttributes — атрибуты элемента, характерные для выборки

message CatalogueItemSelectionAttributes {
    optional uint64 views_count = 1;

    optional int32 year = 2;
    optional string picture_url = 3;
    optional string short_description = 4;
    optional int64 duration = 5;
    optional int32 age = 6;
    optional string thumbnail_url = 7;
    optoinal timestamp publication_ts = 8;
    repeated string tags = 9;
    repeated string countries = 10;
    repeated string genres = 11;
    repeated string directors = 12;
    repeated string actors = 13;
    optional string original_title = 14;
    repeated int32 seasons = 15;
    optional int32 season = 16;
    optional int32 episode = 17;
    optional DModel distribution_model = 18;
    repeated int32 VOD vod = 19;

    enum DModel {
        FREE= 0;
        AVOD = 1;
        SVOD = 2;
        TVOD = 3;
    }   

}

Замечания:

Для VOD-контента:

VOD — информация о VOD-контенте

message VOD {
   optional VODType type = 1;   
   optional string video_id = 2;
   optional string video_url = 3;
   optional DModel distribution_model = 4;
   optional string auth_url = 5;
   optional string stream_url = 6;

   enum VODType {
        RUTUBE= 1;
        TVIGLE = 2;
        IVI = 3;
        MEGOGO = 4;
    }   

   enum DModel {
        FREE= 0;
        AVOD = 1;
        SVOD = 2;
        TVOD = 3;
    }   
}

Где - video_id — уникальный идентификатор фильма - type — поставщик VOD контента - video_url - ссылка для воспроизведения в плеере (необязательна) - distribution_model - описано выше - auth_url - ссылка для получения токена клиентом для последующего запроса контента (для Megogo) - stream_url - ссылка для получения контента клиентом, в запросе используется токен из ответа на запрос auth_url (для Megogo)

CatalogueItem — элемент медиа каталога

message CatalogueItem {
    optional int64 id = 1;
    optional MediaGuideType guide_type = 2 [deprecated = true];
    optional CatalogueItemSelectionAttributes selection_attributes = 3;

    repeated Rubric related_rubrics = 4;        
    optional string title = 5;
    optional string description = 6;
}

Замечания:

На данном этапе (апрель 2015) получение подробной информации об элементе каталога возможно только при помощи Media Guide.

SelectionPage — Страница выборки выпусков передач

message SelectionPage {
  repeated CatalogueItem items = 1;
  optional int64 total_count = 2;

  optional string lower_mark = 3;
  optional string upper_mark = 4;
  optional int64 window_size = 5;

  optional int32 ttl = 6;

  optional int32 items_skipped = 7 [default = 0];
}

Замечания:

Rubricator, Rubric, RubricOption — рубрикатор

RubricOption, RubricOptionType, RubricOptionValue — опция рубрики

enum RubricOptionType {
  SWITCH = 0;
  INPUT = 1;
}

message RubricOptionValue {
  optional string title = 1;
  opitonal string value = 2;
  optional bool selected_by_default = 3 [default = false];
}

message RubricOption {
  optional int64 id = 1;
  optional RubricOptionType type = 2;
  optional string title = 3;
  repeated RubricOptionValue values = 4;
}

Замечания:

Rubric, RubricUIHint — рубрика

enum RubricUIHint {
  option allow_alias = true;
  SEARCH = 1;
  FEATURED = 2;
  RECOMMENDED = 3;
  TOP = 4;
  POPULAR = 4;
  STORIES = 5;
  GENRES = 6;
  MOVIES = 7;
  SERIES = 8;
  EPISODES = 9;
}

message Rubric {
  optional int64 id = 1;
  optional string title = 3;
  optional string description = 4;
  repeated Rubric subitems = 5;
  optional bool have_subitems = 6;
  optional RubricUIHint ui_hint = 7;
  repeated RubricOption options = 8;
  optional bool timelined = 9 [default = false];
}

Замечания:

Rubricator — рубрикатор

message Rubricator {
  repeated Rubric items = 1;

  optional int32 items_skipped = 2 [default = 0];
  optional int32 total_count = 3;
}

Замечания:

RubricOptionSuggestions, RubricSuggestions — предложения по продолжению ввода

RubricOptionSuggestions — предложения для опции рубрики

message RubricOptionSuggestions {
  optional int64 id = 1;
  repeated string suggestions = 2;
}

Замечания:

RubricSuggestions — предложения для рубрики

message RubricSuggestions {
  repeated RubricOptionSuggestions suggestions = 1;
}

Замечания:

История изменений

Изменения в версии 1.0.0 (TVREC–274)

Изменения в версии 1.1.1 (WEBDEV–7958)

  1. CatalogueItem расширен атрибутами элементов, характерных для выборки.

Изменения в версии 1.1.2

  1. Атрибут CatalogueItem::type заменен на CatalogueItem::guide_type, объявлен устаревшим до расширения метода select для получения полного списка атрибутов элементов.

Изменения в версии 1.2.0

  1. Предложено использовать схему аутентификации в соответствии с типом выданного токена.

Изменения в версии 1.2.1

  1. Изменено описание подсказки FEATURED, теперь она обозначает выбор редакции.

Изменения в версии 1.2.2

  1. Исправлена опечатка в описании алгоритма связывания элементов графического интерфейса и рубрик из рубрикатора.

Изменения в версии 1.2.3 (TVREC–408)

  1. Метод logo не требует аутентификации пользователя.

Изменения в версии 1.3.0

  1. Параметр quantity из метода rubricator переименован в count.

Изменения в версии 1.4.0 (TVREC–425)

  1. Добавлена локализация.

Изменения в версии 1.5.0 (WEBDEV–8319)

  1. Метод rubricator теперь возвращает текущую рубрику и ее подрубрики.

Изменения в версии 1.5.1 (WEBDEV–8395)

  1. Указано рекомендуемое значение по ограничению сервером максимального размера выборки;
  2. Задокументировано ограничение на длину введенной фразы при использовании опции ввода;

Изменения в версии 1.6.0 (TVREC–626)

  1. Описан параметр fields для фильтрации списка получаемых атрибутов для элементов каталога.

Изменения в версии 1.7.0 (TVREC–629)

  1. Описана интерпретация некоторых стандартных кодов ответов;
  2. Описано требование о передаче HTTP заголовка WWW-Authenticate в случае ошибок запроса с кодами ответа 401, 403.

Изменения в версии 1.7.1

  1. Описано требование по кодированию значений параметров при обращении к методам API.

Изменения в версии 1.8.0 (TVREC–621)

  1. Описан параметр id для получения элементов каталога;
  2. Описан атрибут related_rubrics в сообщении CatalogueItem для получения списка ассоциированных с элементом каталога рубрик.

Изменения в версии 1.8.1

  1. Описано поле items_skipped в сообщении SelectionPage.

Изменения в версии 1.9.0 (TVREC–1054)

  1. Описан опциональный атрибут options для объекта related_rubrics в сообщении CatalogueItem, который может быть использован для дополнительной фильтрации или упорядочивания выборки по рубрике, связанной с элементом каталога.

Изменения в версии 1.9.1 (WEBDEV–12227)

  1. Добавлен ui_hint для рубрикации каналов.

Изменения в версии 1.10.0 (WEBDEV–12456)

  1. Расширены CatalogueItemSelectionAttributes и CatalogueItem для выдачи VOD-контента.

Изменения в версии 1.11.0 (TVSET–2190)

  1. Расширены CatalogueItemSelectionAttributes для выдачи VOD-контента.
  2. Добавлен ui_hint для рубрик c эпизодами сериала.

Изменения в версии 1.11.1

  1. В CatalogueItemSelectionAttributes для VOD-контента добавлены идентификаторы видео у поставщиков.

Изменения в версии 1.12.0

  1. Добавлен sort для выборки медиа–каталога.

  1. gt — общепринятое сокращение для выражения «greater than»  ↩

  2. lt — общепринятое сокращение для выражения «less than»  ↩

  3. определения использованных значений описаны в документе «Термины и определения»  ↩