Данный сервис предназначен для осуществления навигации по произвольным наборам медиа-контента, заранее сформированным модератором. Примерами таких наборов могут служить популярные и тематические подборки выпусков телепередач и т.д.
Каждый из наборов может быть упорядочен по определенному критерию, а так же пользователю может быть предоставлена возможность выбирать критерий упорядочивания или дополнительный критерий выборки. Навигация внутри набора осуществляется постранично.
Источник медиа-контента может пополняться с течением времени, что наряду с произвольным упорядочиванием делает постраничную навигацию неэффективной, поскольку добавленные элементы могут нарушить порядок элементов, полученных клиентским приложением или привести к дублированию элементов. Для решения данной проблемы предложена навигация при помощи меток (например, временных — timeline).
Сервис поддерживает неограниченный уровень вложенности для наборов медиа-контента.
В планах расширить возможности данного сервиса для замены существующих сервисов, таких как Media Guide, Films.
В этом документе используются термины и определения, описанные в документах «О программных интерфейсах сервисов Инетры» и «Термины и определения».
Рубрикатор нужен для формирования коллекций при навигации пользователем по меню приложения или схожим по функциональности с ним элементам графического интерфейса.
Внимание на данный момент (версия 1.X):
Рубрикатор может быть различным в зависимости от:
Пример рубрикатора:
Тот же рубрикатор для устройств с пультом дистанцинного управления может выглядеть так:
При выборе пользователем рубрики может быть осуществлена выборка из медиа–каталога.
Каждая рубрика может иметь опции, задающие дополнительные параметры выборки. Опции рубрики бывают следующих типов:
Корневые рубрики могут быть использованы для построения главного меню приложения, или разнесены по другим графическим элементам интерфейса. Так, роль главного меню в iOS может выполнять TabBar, при этом элемент поиска обычно располагается в верхней части интерфейса.
Рубрика может содержать дополнительную подсказку ui_hint
о том, как отображать результаты выборки в приложении. Это также может помочь приложению реализовать ожидаемое поведение для имеющихся элементов графического интерфейса.
Например, в интерфейсе приложения «Популярное» и «Рекомендации» могут отличаться по детализации отображаемой информации о фрагментах, а «Поиск» требовать отображения дополнительного всплывающего окна.
Построение связи между графическим интерфейсом пользователя и рубрикатором должно производиться по следующему алгоритму:
rubricator
на получение рубрикатора.ui_hint
, указанной в рубрике.
Expires
ответа сервера,Получение или обновление рубрикатора и связывание его с имеющимися элементами графического интерфейса должно производиться в фоновом режиме и не влиять на работу остальной функциональности приложения. При этом допускается отображать надпись «Производится загрузка информации» или ей подобную для выбранных пользователем элементов графического интерфейса, для которых ожидается рубрика с сервера, но в данный момент получение и построение рубрикатора еще не завершено.
Параметр 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
будет проигнорирована, так как приложение (пока) не поддерживает поиск по выпускам передач.
При выборе пользователем (переходе на пункт меню, нажатие на элемент графического интерфейса и т.п.) рубрики приложение:
select
осуществляется выборка медиа–каталога по рубрике. Полученные фрагменты отображаются согласно дизайну для соответствующего значения ui_hint
.При изменении значения любой опции происходит переполучение выборки для выбранной рубрики, с последующим обновлением интерфейса приложения в соответствии со значением поля ui_hint
.
Если это предусмотрено интерфейсом, для опций, требующих ввод, пользователю предлагаются возможные продолжения ввода, с помощью метода suggestions
.
Из описанного алгоритма вытекают следующие ограничения:
Рассмотрим для примера следующий рубрикатор:
1
, значения: «по количеству просмотров» (выбрана по умолчанию), «по дате выхода»1
1
2
, значения: «все» (выбрана по умолчанию), «фильмы», «мультфильмы»В данном случае подрубрики «Украина» и «Чемпионат мира по снукеру 2014» имеют одинаковую с вышестоящей рубрикой опцию «сортировка». При этом, если пользователь на экране рубрики «Интересно посмотреть» выбрал для опции «сортировка» значение «по дате выхода», она сохраняется и при переходе в подрубрики. Если значение опции «сортировка» в подрубрике было изменено, оно должно быть изменено и в вышестоящей рубрике, а получение выборки медиа–каталога произведено заново.
Заметим, что наличие для рубрики «Рекомендации» опции с идентификатором 1
было бы ошибкой и было бы проигнорировано приложением.
Параметры для методов select
и suggestions
передаются следующим образом:
rubric
.rubric_options
, при этом кодируются следующим образом:
,
— выбранное значение.value
, для опций требующих ввод, используется введенная пользователем строка в кодировке UTF–8.,
, ;
и \
должны быть экранированы символом \
, т.е. заменены на последовательности символов \,
, \;
и \\
, соответственно.;
.При обработке метода select
сервер с помощью переданного параметра rubric
определяет запрос, который необходимо выполнить в базе данных, а параметры запроса формирует из параметра rubric_options
:
rubric_options
декодируется с помощью функции urldecode
(PHP) или аналогичной.;
(последовательность \;
при этом не считается разделителем).,
(последовательность \,
при этом разделителем не является).\\
, \,
и \;
заменяются на символы \
, ,
и ;
, соответственно.Продолжая пример с 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
можно указать желаемое максимальное количество элементов выборки. Сервер может:
Замечания:
lower_mark
и upper_mark
являются условными. Так, при сортировке выборки в обратном порядке, значение lower_mark
может быть большим, чем значение upper_mark
. Работа со значениями на стороне приложения в таком случае не меняется.lower_mark
заполняется значением атрибута сортировки для первого элемента результата SQL запроса, upper_mark
— значением атрибута сортировки последнего элемента запроса.На данный момент в результате работы метода select
Media Catalogue API возвращает лишь ограниченный набор атрибутов элементов каталога:
Тип Media Guide и идентификатор элемента позволяют приложению получить такие атрибуты элемента, как его название, описание, дату публикации и т.п.. Тип элемента из Media Guide определяет метод Media Guide API, к которому следует обратиться приложению для получения необходимых ему атрибутов.
У элементов существуют атрибуты, которые характерны только для конкретной выборки. К таким атрибутам относится, например, количество просмотров: это число зависит от параметров рубрики, определяющих расчетный период времени, за который учитываются просмотры.
API работает по протоколу HTTP, корень доступа может быть получен из Регистратуры при помощи Registry API. API подразумевает доступ только аутентифицированного пользователя, использующего авторизованное приложение.
Запросы к API составляются следующим образом:
http://<path_to_api>/<api_version>/<method>.<format>?[params]
Где:
path_to_api
— путь до API, полученный в Регистратуре;api_version
— мажорная версия API (должна быть равна 1
);method
— имя метода API;format
— ожидаемый формат ответа:
json
— JSON;protobuf
— Google Protocol Buffers.png
— Portable Network Graphics, только для метода logo
;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). Ниже описана интерпретация некоторых кодов:
200
— запрос успешно обработан400
— некорректно составлен запрос401
— требуется аутентификация:
403
— доступ запрещен:
В случае кодов 401
, 403
должен быть передан HTTP заголовок WWW-Authenticate
с указанием ожидаемой схемы аутентификации и дополнительнной информации (если применимо). Например, для схемы «Bearer» может быть указан дополнительный атрибут error
со значением:
invalid_token
— передан некорректный, просроченный или отозванный токен доступа (код 401
);insufficient_scope
— запрос требует более высоких привилегий, чем те, которыми обладает токен доступа (код 403
).rubricator
— получение рубрикатораДополнительные параметры:
параметр | формат | по умолчанию | смысл |
---|---|---|---|
rubric |
число |
отсутствует | Идентификатор рубрики |
count |
число |
отсутствует | Максимальное количество подрубрик в выдаче |
skip |
число |
0 |
Смещение рубрик в выдаче |
Если параметр rubric
не передан, подразумевается запрос полного рубрикатора, иначе будет возвращена выбранная рубрика и ее подрубрики.
Формат ответа: сообщение Rubricator
.
За сервером остается право ограничивать размер ответа. Для этого вместо выдачи полного рубрикатора могут быть использованы следующие техники:
have_subitems
вместо передачи непосредственно списка подрубрик в поле subitems
. Для получения подрубрик в таком случае необходимо сделать еще один запрос получения рубрикатора, передав идентификатор родительской рубрики в параметре rubric
.total_count
, содержащее точное значение количества рубрик на данном уровне. Клиент должен сделать дополнительные запрос, указывая параметр смещения skip
.count
, однако за сервером остается право уменьшить данное значение на своей стороне.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
.
logo
— Запрос логотипа для рубрикипараметр | формат | по умолчанию | смысл |
---|---|---|---|
rubric |
число |
отсутствует | Идентификатор рубрики |
Представление данных | |||
profile |
строка |
web |
желаемый профиль изображения |
strict |
true , false |
false |
возвращать логотип только при точном соответствии параметров представления |
resolution |
WIDTHxHEIGHT |
отсутствует | желаемое разрешение |
Данный метод производит перенаправление на адрес запрашиваемого ресурса. Получение логотипов в формате, отличном от PNG, не предусмотрено.
ВНИМАНИЕ: метод logo
не требует аутентификации пользователя.
Для логотипов может существовать несколько профилей отображения, адаптированных под дизайн или возможности платформы. Чтобы задать желаемый профиль отображения необходимо указать параметр profile
, в случае отсутствия изображения с запрошенным профилем сервер вернет изображение по умолчанию.
Поддерживаемые значения для параметра profile
:
web
— адаптированный для отображения в вебе;android
— адаптированный для устройств на базе Android;ios
— адаптированный для устройств на базе iOS.Также можно указать желаемые размеры логотипов при помощи параметров resolution
, если данный параметр указан, то сервер вернет наиболее близкое по размеру изображения, но не меньше запрашиваемого, если подходящего изображения не найдено, то будет возвращено изображение по умолчанию.
При указании параметра strict
со значением true
сервер должен вернуть HTTP код 404
с пустым телом ответа, если логотип с запрашиваемыми параметрами представления не найден.
enum MediaGuideType {
CHANNEL = 1;
BROADCAST = 2;
FRAGMENT = 3;
MOVIE = 4;
SERIES = 5;
}
Описание значений:
MediaGuideType |
значение[3] |
---|---|
CHANNEL |
канал |
BROADCAST |
передача |
FRAGMENT |
фрагмент |
MOVIE |
фильм |
SERIES |
сериал |
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;
}
}
Замечания:
views_count
— количество просмотров за период времени, определяемый выборкой;Для VOD-контента:
publication_ts
— дата публикации;original_title
— оригинальное название;short_description
— краткое описание;year
— год выхода;age
— возрастные ограничения;duration
— длительность в секундах;picture_url
— ссылка на постер;thumbnail_url
— промо-картинка;countries
— список стран;genres
— список жанров;directors
— список режиссёров;actors
— список актёров;tags
— список тагов;seasons
— список доступных сезонов сериала;season
— номер сезона сериала;episode
— номер серии сериала;distribution_model
— модель распространения контента. FREE - бесплатно, AVOD - после просмотра рекламы, SVOD - по подписке, TVOD - покупка конкретной единицы контента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)
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;
}
Замечания:
CatalogueItem
является унифицированным элементом медийного каталога, для разных видов которого заполняются различные поля.id
— уникальный (в рамках каталога) числовой идентификатор;guide_type
— тип элемента каталога из Media Guide API;selection_attributes
— атрибуты элемента, характерные для выборки;title
— название фильма;description
— полное описание фильма;related_rubrics
— рубрики, ассоциированные с данным элементом каталога, например, «Другие выпуски телепередачи», «Похожие выпуски» и другие редакционные подборки. Сообщение Rubric должно содержать атрибуты id
, title
и опционально options
, если требуется дополнительная фильтрация или упорядочивание выборки. Так, например, рубрика может содержать только одну опцию, выбранную по умолчанию, с одним значением для задания особой сортировки для конкретного пользователя, при этом клиент не должен отображать данную опцию в графическом интерфейсе.На данном этапе (апрель 2015) получение подробной информации об элементе каталога возможно только при помощи Media Guide.
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];
}
Замечания:
items_skipped
— количество пропущенных элементов в выборкеtotal_count
— общее количество элементов в выборкеwindow_size
— количество элементов, в заданном временном интервале. Не используется при постраничной реализации выборки.lower_mark
— нижняя временная метка окна выборкиupper_mark
— верхняя временная метка окна выборкиttl
— время в секундах, на которое клиент может закэшировать страницу выборки. Используется только при постраничной навигации по выборке.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;
}
Замечания:
id
— числовой идентификатор опцииtype
— тип опции, возможные значения:
SWITCH
— переключаемая, возможен только один выбор из предложенных в values
INPUT
— предполагает вводtitle
— локализованное название опции, отображаемое в интерфейсе, если это предусмотрено дизайномvalues
— возможные значения опции. Отсутствует для опций типа INPUT
title
— отображаемое в интерфейсе локализованное значение.value
— передаваемое на сервер значение. См. Обработка выбора пользователем рубрикиselected_by_default
— является ли данное значение опции выбранным по умолчанию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];
}
Замечания:
id
— числовой идентификатор.title
— отображаемый в интерфейсе локализованный заголовок рубрики.description
— отображаемое в интерфейсе локализованное описание рубрики.subitems
— подрубрики, have_subitems
— наличие подрубрик. Данные поля являются взаимоисключающими. Сервер может сообщать о наличии подрубрик, без указания точных параметров для ограничения размера ответа.options
— опции рубрики.ui_hint
— подсказка по способу отображения рубрики в графическом интерфейсе приложения:
SEARCH
— поиск в приложенииFEATURED
— выбор редакцииRECOMMENDED
— рекомендацииTOP
, POPULAR
— популярноеSTORIES
— «хайлайты», сюжеты выпусков передач, обычно на одну темуGENRES
— рубрики(жанры) каналовMOVIES
— фильмыSERIES
— сериалыEPISODES
— эпизоды сериалаtimelined
— использовать временные метки для навигации по выборке.message Rubricator {
repeated Rubric items = 1;
optional int32 items_skipped = 2 [default = 0];
optional int32 total_count = 3;
}
Замечания:
items_skipped
— количество пропущенных подрубрик в выдачеtotal_count
— общее количество подрубрик в выдачеmessage RubricOptionSuggestions {
optional int64 id = 1;
repeated string suggestions = 2;
}
Замечания:
id
— идентификатор опции, для которой сделаны предложенияsuggestions
— массив предложений по продолжению ввода для указанной опции, отсортирован по релевантностиmessage RubricSuggestions {
repeated RubricOptionSuggestions suggestions = 1;
}
Замечания:
suggestions
— предложения для опцийrubricator
, suggestion
, select
;logo
.CatalogueItem
расширен атрибутами элементов, характерных для выборки.CatalogueItem::type
заменен на CatalogueItem::guide_type
, объявлен устаревшим до расширения метода select
для получения полного списка атрибутов элементов.FEATURED
, теперь она обозначает выбор редакции.logo
не требует аутентификации пользователя.quantity
из метода rubricator
переименован в count
.rubricator
теперь возвращает текущую рубрику и ее подрубрики.fields
для фильтрации списка получаемых атрибутов для элементов каталога.WWW-Authenticate
в случае ошибок запроса с кодами ответа 401
, 403
.id
для получения элементов каталога;related_rubrics
в сообщении CatalogueItem
для получения списка ассоциированных с элементом каталога рубрик.items_skipped
в сообщении SelectionPage
.options
для объекта related_rubrics
в сообщении CatalogueItem
, который может быть использован для дополнительной фильтрации или упорядочивания выборки по рубрике, связанной с элементом каталога.ui_hint
для рубрикации каналов.CatalogueItemSelectionAttributes
и CatalogueItem
для выдачи VOD-контента.CatalogueItemSelectionAttributes
для выдачи VOD-контента.ui_hint
для рубрик c эпизодами сериала.CatalogueItemSelectionAttributes
для VOD-контента добавлены идентификаторы видео у поставщиков.sort
для выборки медиа–каталога.gt
— общепринятое сокращение для выражения «greater than» ↩
lt
— общепринятое сокращение для выражения «less than» ↩
определения использованных значений описаны в документе «Термины и определения» ↩