API — различия между версиями

Материал из Твое Интернет Телевидение
Перейти к: навигация, поиск
(Спрайты логотипов)
 
(не показано 177 промежуточных версий этого же участника)
Строка 1: Строка 1:
 +
=Изменения=
 +
'''12.10.2017'''
 +
* Для метода '''groups''' добавлен необязательный параметр '''favorites''' для отображения группы "Избранное" в списке.
 +
'''27.09.2017'''
 +
* Изменение в описании спрайтов.
 +
'''10.09.2017'''
 +
* Добавлены спрайты логотипов каналов.
 +
'''21.08.2017'''
 +
* Обновлен метод '''search''', добавлены параметры group_soon, group_now, group_archive.
 +
'''20.08.2017'''
 +
* Добавлен метод '''search''' для поиска по программе передач
 +
'''23.06.2017'''
 +
* Для метода channels добавлен параметр epg, который может принимать единственное значение epg=no и служит для отключения секции epg в выводе. Например, для оптимизации и ускорения вывода списка каналов, когда информация о EPG не требуется.
 +
* В метод account -> info добавлены значения:
 +
:: id - лицевой счет клиента.
 +
:: balance - неиспользованный баланс клиента.
 +
'''01.05.2017'''
 +
* Для метода set_favorites добавлен параметр set. В качестве аргумента могут выступать:
 +
:: a) Список ID каналов через запятую для установки нового списка избранного состоящего из указанных каналов в указанном порядке.<br/>
 +
:: b) 0 - для полной очистки списка избранного.<br/>
 +
 +
'''21.03.2017'''
 +
* Для метода channels параметр gid может быть равным 100 (gid=100) - это позволяет получить список избранного как группы.
 +
 +
'''20.02.2017'''
 +
* Для метода channels добавлен параметр filter_cname - фильтр по названию канала.
 +
* В метод epg -> channels -> epg добавлены значения:
 +
:: recorded - указатель наличия архива передачи.
 +
:: live - 1 если передача идет на текущий момент, отсутствует если иначе.
 +
 +
=Описание=
 +
В данной статье описывается возможное взаимодействие между клиентом и сервером API сервиса TVclub.us. Данное API проходит стадию тестирования, может изменяться и дополняться без предварительного уведомления. По всем вопросам, просьбам и предложениям пишите на почту <span style="color:green">support@tvclub.us</span>.
 +
 +
<div style="color:red">Приглашаем разработчиков для тестирования API</div>
 +
 +
 +
При использовании данного API, сервис TVClub.us оставляет за собой право размещения ссылки и/или архива файлов (плагинов, приложений, виджетов и прочего ПО) использующих данное API с указанием разработчика.
 +
 +
=Требования=
 +
*Поддержка HTTP 1.0
 +
*Поддержка HTTP redirect (301,302)
 +
*Поддержка [http://ru.wikipedia.org/wiki/XML XML] или [http://ru.wikipedia.org/wiki/JSON JSON] форматов данных
 +
*Поддержка видео-кодека H.264, аудио-кодека AAC, контейнеров mpeg-ts и mp4
 +
 +
=Договоренности=
 +
* Все временные метки только в формате Unixtime
 +
* Boolean значение имеет следующее обозначение: положительное - 1, отрицательное - 0»
 +
* Кодировка UTF8.
 +
 
=Общие обозначения=
 
=Общие обозначения=
 
*<FORMAT_TYPE> - формат возврата ответа от сервера. Доступны формат XML и JSON.
 
*<FORMAT_TYPE> - формат возврата ответа от сервера. Доступны формат XML и JSON.
*<API_VERSION> - Версия API. Текущая версия 1.0
+
*<API_VERSION> - Версия API. Текущая версия 0.8
 
*<SERVERTIME> - Текущее время на сервере.
 
*<SERVERTIME> - Текущее время на сервере.
*<TOKEN_ID> - Уникальный ключ token.
+
*<TOKEN_ID> - Уникальный ключ token полученный в результате авторизации.
*<TOKEN_EXPIRE> - TTL токена.
+
*<TOKEN_EXPIRE> - время до которого ключ token будет актуален.
 +
 
 +
=Постраничный вывод=
 +
Возврат некоторых ответов от сервера может иметь постраничный вывод. При этом действуют общие правила манипуляцией вывода с помощью следующих параметров:
 +
::'''limit''' - лимит количества записей для одной выборки для опорной единицы. Например - количество каналов метода epg. Значение может быть от 1 до 200.
 +
::'''start''' - номер элемента опорной единицы с которого производится выборка. Параметр не учитывается, если иcпользуется параметр page.
 +
::'''page''' - номер страницы для постраничного вывода.
 +
 
 +
===Пример запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/<API_METHOD>?hash=<HASH>&limit=14&page=3</pre>
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
<info>
 +
<limit><ITEMS_LIMIT></limit>
 +
<count><ITEMS_COUNT></count>
 +
<pages><ITEMS_PAGES></pages>
 +
<page><ITEMS_CURRENT_PAGE></page>
 +
</info>
 +
<API_METHOD>
 +
...
 +
</API_METHOD>
 +
<session>
 +
<token><TOKEN_ID></token>
 +
<expire><TOKEN_EXPIRE></expire>
 +
<now><SERVERTIME></now>
 +
</session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>
 +
{
 +
"info": {
 +
"limit": <ITEMS_LIMIT>,
 +
"count": <ITEMS_COUNT>,
 +
"pages": <ITEMS_PAGES>,
 +
"page": <ITEMS_CURRENT_PAGE>
 +
},
 +
<API_METHOD>: {
 +
...
 +
},
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
:'''info''' - информация о постраничном выводе
 +
::'''ITEMS_LIMIT''' - общее количество записей
 +
::'''ITEMS_COUNT''' - количество единиц на текущей странице
 +
::'''ITEMS_PAGES''' - общее количество страниц
 +
::'''ITEMS_CURRENT_PAGE''' - номер текущей страницы
 +
 
 +
=Логотипы каналов=
 +
 
 +
Доступны несколько размеров и форматов логотипов.
 +
 
 +
Получить иконку для канала с ID = CH_ID и в формате LOGO_FORMAT можно с помощью URL:
 +
 
 +
<pre>http://api.iptv.so/logo/<LOGO_FORMAT>/<CH_ID>.png</pre>
 +
 
 +
'''Доступные форматы:'''
 +
[[Файл:Logo_original.png|thumb|left|*'''original''' - 490x280 без рамки]]
 +
 
 +
[[Файл:Logo_490_280_1.png|thumb|left|*'''490_280_1''' - 490x280 c рамкой]]
 +
 
 +
 
 +
 
 +
*'''original''' - 490x280 без рамки
 +
*'''490_280_1''' - 490x280 с рамкой
  
 +
*'''36_36_0''' - 36x36 без рамки
 +
*'''36_36_1''' - 36x36 с рамкой
 +
 +
*'''48_48_0''' - 48x48 без рамки
 +
*'''48_48_1''' - 48x48 с рамкой
 +
 +
*'''72_72_0''' - 72x72 без рамки
 +
*'''72_72_1''' - 72x72 с рамкой
 +
 +
*'''90_50_0''' - 90x50 без рамки
 +
*'''90_50_1''' - 90x50 с рамкой
 +
 +
*'''96_96_0''' - 96x96 без рамки
 +
*'''96_96_1''' - 96x96 с рамкой
 +
 +
*'''200_115_0''' - 200x115 без рамки
 +
*'''200_115_1''' - 200x115 с рамкой
 +
 +
*'''300_170_0''' - 300x170 без рамки
 +
*'''300_170_1''' - 300x170 с рамкой
 +
 +
 +
<div style="clear:both"></div>
 +
 +
=Спрайты логотипов=
 +
 +
''<font color="#45678">Sprite Sheet — это одно большое изображение мелких графических элементов, в данном случае - это логотипы каналов. Благодаря CSS можно отображать каждый элемент отдельно не загружая при этом массу мелких изображений. Главным преимуществом использования спрайтов является однократная загрузка клиентом сразу всех элементов в одном файле тем самым значительно сокращая количество HTTP-запросов к серверу.</font>''
 +
::
 +
::
 +
'''Доступные форматы <SPRITE_FORMAT>:'''
 +
*'''90_50_0''' - 90x50 без рамки
 +
*'''90_50_1''' - 90x50 с рамкой
 +
 +
Получить спрайт иконок размером <SPRITE_FORMAT> можно с помощью URL:
 +
<pre>http://api.iptv.so/sprite/<SPRITE_FORMAT>.png</pre>
 +
 +
Позиции иконок в спрайте указаны в файле:
 +
<pre>http://api.iptv.so/sprite/<SPRITE_FORMAT>.json</pre>
 +
Файл представляет собой массив данных в json формате: <br/>
 +
<pre>{"name":"<SPRITE_FORMAT>","size":"<SPRITE_SIZE>","nums":"<SPRITE_ROWS>","hash":"<SPRITE_HASH>","data": {"<CH_ID>": {"x":<CORD_X>,"y":<CORD_Y>,"a":<POS_X>,"b":<POS_Y>}, ...}}</pre><br/>
 +
Где:<br/>
 +
::'''<SPRITE_SIZE>''' - размер спрайта в пикселях.
 +
::'''<SPRITE_ROWS>''' - количество логотипов в спрайте по ширине и высоте.
 +
::'''<SPRITE_HASH>''' - уникальный хеш спрайта, используется для сверки изменений. Если хеш изменился, необходимо загрузить спрайт снова так как он был изменен.
 +
::'''<CH_ID>''' - ID канала.
 +
::'''<CORD_X>''' - координаты логотипа по оси X.
 +
::'''<CORD_Y>''' - координаты логотипа по оси Y.
 +
::'''<POS_X>''' - позиция от левого верхнего угла в пикселях по оси X.
 +
::'''<POS_Y>''' - позиция от левого верхнего угла в пикселях по оси Y.
 +
 +
::
 +
Если по какой-то причине не обнаружены координаты необходимого логотипа, используйте позицию X=0 и Y=0 для установки заглушки "No Image" из спрайта. Такое может случится, например, если были добавлены новые каналы, а спрайты еще не сгенерированы.
  
 
=Методы=
 
=Методы=
 +
  
  
 
== [auth] Авторизация ==
 
== [auth] Авторизация ==
 +
'''<span style="color:red">Внимание!</span>'''<br/>
 +
06.01.2017 были внесены изменения в алгоритм авторизации. Token, ключ, который используется для вызова остальных процедур API, теперь всегда равен MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>)).
 +
'''Таким образом в этапе авторизации теперь нет необходимости и этот шаг можно (нужно) пропустить, так как зная логин и пароль известен и token'''. А для получении информации об аккаунте используется метод '''account'''.
 +
 
===Описание метода===
 
===Описание метода===
Самым первым запросом на сервер API всегда должен быть запрос на авторизацию клиента. В случае успеха, сервер вернет информацию о аккаунте клиента и информации о созданной сессии в которой содержится уникальный ключ - token, для доступа к остальным методам API. Без этого ключа вызов других методов API невозможен.
+
<span style="color:red">(ДО 06.01.2017!!!)</span> <span style="color:#cccccc">Самым первым запросом на сервер API всегда должен быть запрос на авторизацию клиента. В случае успеха, сервер вернет информацию о аккаунте клиента и информации о созданной сессии в которой содержится уникальный ключ - token, для доступа к остальным методам API. Без этого ключа вызов других методов API невозможен.</span>
  
 
===Формат запроса===
 
===Формат запроса===
 
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/auth?hash=<HASH></pre>
 
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/auth?hash=<HASH></pre>
 
'''HASH''' - это MD5-хеш полученный в результате конкатенации логина пользователя и MD5-хеша пароля пользователя - MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>))
 
'''HASH''' - это MD5-хеш полученный в результате конкатенации логина пользователя и MD5-хеша пароля пользователя - MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>))
 
  
 
===Примеры запроса===
 
===Примеры запроса===
 
'''PHP'''
 
'''PHP'''
<pre>$data=file_get_contents('http://api.iptv.so/1.0/xml/auth?hash='.MD5($login.MD5($password)));</pre>
+
<pre>$data=file_get_contents('http://api.iptv.so/0.8/xml/auth?hash='.MD5($login.MD5($password)));</pre>
  
  
Строка 32: Строка 217:
 
     <account>
 
     <account>
 
       <info>
 
       <info>
 +
        <id><USER_ID></id>
 
         <login><USER_LOGIN></login>
 
         <login><USER_LOGIN></login>
 
         <mail><USER_EMAIL></mail>
 
         <mail><USER_EMAIL></mail>
 
         <name><USER_NAME></name>
 
         <name><USER_NAME></name>
 +
        <balance><USER_BALANCE></balance>
 
       </info>
 
       </info>
 
       <options>
 
       <options>
Строка 66: Строка 253:
 
|+JSON
 
|+JSON
 
|-
 
|-
|<pre>{ "account": {
+
|<pre>{
 +
    "account": {
 
"info": {
 
"info": {
 +
"id": <USER_ID>,
 
"login": <USER_LOGIN>,
 
"login": <USER_LOGIN>,
 
"mail": <USER_EMAIL>,
 
"mail": <USER_EMAIL>,
"name": <USER_NAME>
+
"name": <USER_NAME>,
 +
"balance": <USER_BALANCE>,
 
},
 
},
 
"options": {
 
"options": {
<OPTION_NAME>: 1|0
+
<OPTION_NAME>: 1|0,
 +
...
 
},
 
},
 
"services": [
 
"services": [
Строка 104: Строка 295:
 
'''account''' - содержит в себе
 
'''account''' - содержит в себе
 
:: '''info''' - информация о аккаунте клиента
 
:: '''info''' - информация о аккаунте клиента
 +
::::'''USER_ID''' - лицевой счет клиента
 
::::'''USER_LOGIN''' - логин клиента
 
::::'''USER_LOGIN''' - логин клиента
 
::::'''USER_EMAIL''' - e-mail клиента
 
::::'''USER_EMAIL''' - e-mail клиента
 
::::'''USER_NAME''' - имя клиента
 
::::'''USER_NAME''' - имя клиента
 +
::::'''USER_BALANCE''' - неиспользованный баланс клиента
 
:: '''options''' - список доступных
 
:: '''options''' - список доступных
 
::::'''OPTION_NAME''' - имя опции, может принимать значение 1 - доступно или 0 - недоступно для клиента.
 
::::'''OPTION_NAME''' - имя опции, может принимать значение 1 - доступно или 0 - недоступно для клиента.
Строка 123: Строка 316:
 
::::'''TOKEN_EXPIRE''' - время до которого действителен текущий ключ доступа. При каждом успешном запросе срок жизни ключа продлевается до 24-х часов с текущей даты.
 
::::'''TOKEN_EXPIRE''' - время до которого действителен текущий ключ доступа. При каждом успешном запросе срок жизни ключа продлевается до 24-х часов с текущей даты.
 
::::'''SERVERTIME''' - текущее время на сервере
 
::::'''SERVERTIME''' - текущее время на сервере
 
 
 
  
 
== [account] Аккаунт ==
 
== [account] Аккаунт ==
  
 
===Описание метода===
 
===Описание метода===
Возвращает ту же информацию, что и метод [http://wiki.tvclub.us/index.php?title=API#.5Bauth.5D_.D0.90.D0.B2.D1.82.D0.BE.D1.80.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F auth]. Может использоваться для получения информации об аккаунте без повторной авторизации.
+
Возвращает ту же информацию, что и метод [http://wiki.tvclub.us/index.php?title=API#.5Bauth.5D_.D0.90.D0.B2.D1.82.D0.BE.D1.80.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F auth]. Может использоваться для получения текущей информации об аккаунте без повторной авторизации.
 
 
  
 
===Формат запроса===
 
===Формат запроса===
Строка 175: Строка 364:
 
<div style="clear:both"></div>
 
<div style="clear:both"></div>
  
== [groups] Список категорий ТВ==
 
  
http://api.iptv.so/1.0/xml/groups?sid=session_id
 
  
== [groups] Список каналов в группе ТВ==
 
  
http://api.iptv.so/1.0/xml/channels?gid=1&sort=1&sid=session_id
+
== [groups] Список ТВ категорий==
 +
===Описание метода===
 +
Возвращает полный список доступных для клиента ТВ категорий.
 +
 
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/groups?token=<TOKEN_ID></pre>
 +
:Необязательные параметры:
 +
::favorites - если параметр присутствует и равен 1, то отображать в списке группу "Избранное".
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
  <groups>
 +
    <item>
 +
      <name_ru><GROUP_ID></name_ru>
 +
      <name_ru><GROUP_NAME_RU></name_ru>
 +
      <name_en><GROUP_NAME_EN></name_en>
 +
      <count><GROUP_CHANNELS_COUNT></count>
 +
    </item>
 +
    ...
 +
  </groups>
 +
  <session>
 +
    <token><TOKEN_ID></token>
 +
    <expire><TOKEN_EXPIRE></expire>
 +
    <now><SERVERTIME></now>
 +
  </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
"groups": [
 +
{
 +
"id": <GROUP_ID>,
 +
"name_ru": <GROUP_NAME_RU>,
 +
"name_en": <GROUP_NAME_EN>,
 +
"count": <GROUP_CHANNELS_COUNT>
 +
},
 +
...
 +
],
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
 
 +
===Описание полученных данных===
 +
'''groups''' - содержит в себе
 +
:: '''GROUP_ID''' - ID группы
 +
:: '''GROUP_NAME_RU''' - Имя группы на русском языке
 +
:: '''GROUP_NAME_EN''' - Имя группы на английском языке
 +
:: '''GROUP_CHANNELS_COUNT''' - Количество каналов доступных для клиента в этой группе
 +
 
 +
== [channels] Список каналов в группе==
 +
 
 +
===Описание метода===
 +
Возвращает '''постраничный''' список доступных для клиента каналов в определенной категории.
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/channels?token=<TOKEN_ID>&gid=<GROUP_ID>&sort=1&limit=20&page=1</pre>
 +
:Обязательные параметры:
 +
::gid - ID группы каналов. gid=100 для вывода избранного как группы каналов.
 +
:Необязательные параметры:
 +
::sort - способ сортировки. Доступные значения: 1 - сортировка по умолчанию, 2 - по ID канала, 3 - по имени канала.
 +
::filter_cname - фильтр по названию канала.
 +
::epg - для ускорения обработки запроса при необходимости можно отключить вывод секции epg на каналах указав параметр epg=no.
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
  <channels>
 +
    <item>
 +
      <info>
 +
        <id><CH_ID></id>
 +
        <name><CH_NAME></name>
 +
        <groups><CH_GROUPS></groups>
 +
        <protected><CH_PROTECTED_FLAG></protected>
 +
        <records><CH_REC_HOURS></records>
 +
        <favorite><CH_IS_FAVORITE></favorite>
 +
      </info>
 +
      <epg>
 +
        <text><CH_PROG_TEXT></text>
 +
        <start><CH_PROG_START></start>
 +
        <end><CH_PROG_END></end>
 +
        <description><CH_PROG_DESC></description>
 +
      </epg>
 +
    </item>
 +
    ...
 +
  </channels>
 +
  <session>
 +
    <token><TOKEN_ID></token>
 +
    <expire><TOKEN_EXPIRE></expire>
 +
    <now><SERVERTIME></now>
 +
  </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
"channels": [
 +
{
 +
"info": {
 +
"id": <CH_ID>,
 +
"name": <CH_NAME>,
 +
"groups": <CH_GROUPS>,
 +
"protected": <CH_PROTECTED_FLAG>,
 +
"records": <CH_REC_HOURS>,
 +
"favorite": <CH_IS_FAVORITE>,
 +
},
 +
"epg": [
 +
"text": <CH_PROG_TEXT>,
 +
"start": <CH_PROG_START>,
 +
"end": <CH_PROG_END>,
 +
"description": <CH_PROG_DESC>
 +
]
 +
},
 +
...
 +
],
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
===Описание полученных данных===
 +
'''channels''' - содержит массив данных
 +
:: '''info''' - общая информация о канале
 +
::::'''CH_ID''' - ID канала
 +
::::'''CH_NAME''' - имя канала
 +
::::'''CH_GROUPS''' - ID категорий канала перечисленных через запятую
 +
::::'''CH_PROTECTED_FLAG''' - указывает закрыт ли канал кодом доступа, значение 1 или 0.
 +
::::'''CH_REC_HOURS''' - наличие архива на канале в часах, 0 - архив отсутствует
 +
::::'''CH_IS_FAVORITE''' - наличие канала в избранном, значение 1 или 0.
 +
:: '''epg''' - информация о текущей программе передач. Пустой элемент, если телепрограмма не доступна.
 +
::::'''CH_PROG_TEXT''' - название текущей передачи
 +
::::'''CH_PROG_START''' - время начала передачи
 +
::::'''CH_PROG_END''' - время окончания передачи
 +
::::'''CH_PROG_DESC''' - описание передачи. Отсутствует, если описание недоступно.
 +
 
 +
== [servers] Список доступных серверов ==
 +
===Описание метода===
 +
Получение списка доступных серверов
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/servers?token=<TOKEN_ID></pre>
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
  <servers>
 +
    <item>
 +
      <id><SERVER_ID></id>
 +
      <name><SERVER_NAME></name>
 +
      <load><SERVER_LOAD></load>
 +
      <power><SERVER_POWER></power>
 +
    </item>
 +
    ...
 +
  </servers>
 +
  <session>
 +
    <token><TOKEN_ID></token>
 +
    <expire><TOKEN_EXPIRE></expire>
 +
    <now><SERVERTIME></now>
 +
  </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
  "servers": [
 +
      {
 +
        "id": <SERVER_ID>,
 +
        "name": <SERVER_NAME>,
 +
        "load": <SERVER_LOAD>,
 +
        "power": <SERVER_POWER>,
 +
      },
 +
      ...
 +
      ],
 +
  "session": {
 +
    "token": <TOKEN_ID>,
 +
    "expire": <TOKEN_EXPIRE>,
 +
    "now": <SERVERTIME>
 +
  }
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
===Описание полученных данных===
 +
'''servers''' - содержит:
 +
::::'''SERVER_ID''' - ID сервера
 +
::::'''SERVER_NAME''' - отображаемое имя сервера
 +
::::'''SERVER_LOAD''' - нагрузка на сервер в процентах
 +
::::'''SERVER_POWER''' - мощность сервера
 +
 
  
@gid - group id
 
  
@sort - 1|2|3
 
  
== [live] Получение ссылки на трансляцию==
+
== [live] Получение ссылки на прямую трансляцию==
  
http://api.iptv.so/1.0/xml/live?cid=1&sid=session_id
+
===Описание метода===
 +
Метод возвращает краткую информацию по каналу и ссылку на поток его прямой трансляции.  
 +
*Ссылка на поток должна быть использована в течении 5 минут
 +
*Ссылка на поток привязана к IP клиента полученного в результате его запроса на сервер API.
 +
*Ссылка на поток привязана к серверу вещания для которого она была получена.
  
@cid - channel id
 
  
==[epg] EPG для определенных каналов на заданный период времени==
+
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/live?token=<TOKEN_ID>&cid=<CH_ID>&protected=<CODE></pre>
 +
:Обязательные параметры:
 +
::cid - ID телеканала.
 +
:Необязательные параметры:
 +
::protected - код родительского контроля, высылается в активационном письме. По умолчанию равен 0000 (четыре ноля).
  
http://api.iptv.so/1.0/xml/epg?cid=1&time=1473541200&period=0&channels=2,1,4,5,6,1,8,9,11,12,13,14&desc_limit=100&sort=1&limit=10&page=1&sid=session_id
+
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
  <live>
 +
    <channel>
 +
      <id><CH_ID></id>
 +
      <name><CH_NAME></name>
 +
      <protected><CH_PROTECTED_FLAG></protected>
 +
      <records><CH_REC_HOURS></records>
 +
    </channel>
 +
    <url><LIVE_URL></url>
 +
  </live>
 +
  <session>
 +
    <token><TOKEN_ID></token>
 +
    <expire><TOKEN_EXPIRE></expire>
 +
    <now><SERVERTIME></now>
 +
  </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
"live": {
 +
"channel": {
 +
"id": <CH_ID>,
 +
"name": <CH_NAME>,
 +
"protected": <CH_PROTECTED_FLAG>,
 +
"records": <CH_REC_HOURS>
 +
},
 +
"url": <LIVE_URL>
 +
},
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
 
 +
===Описание полученных данных===
 +
'''live''' - содержит:
 +
:: '''channel''' - общая информация о канале
 +
::::'''CH_ID''' - ID канала
 +
::::'''CH_NAME''' - имя канала
 +
::::'''CH_PROTECTED_FLAG''' - указывает закрыт ли канал кодом доступа, значение 1 или 0.
 +
::::'''CH_REC_HOURS''' - наличие архива на канале в часах, 0 - архив отсутствует
 +
:: '''url'''
 +
::::'''<LIVE_URL>''' - прямая ссылка на прямую трансляцию
 +
 
 +
 
 +
 
 +
 
 +
== [rec] Получение ссылки на запись==
 +
 
 +
===Описание метода===
 +
Метод возвращает краткую информацию по каналу, информацию о текущей программе передач на указанную дату и ссылку на архивную запись.
 +
*Ссылка на поток должна быть использована в течении 5 минут
 +
*Ссылка на поток привязана к IP клиента полученного в результате его запроса на сервер API.
 +
*Ссылка на поток привязана к серверу вещания для которого она была получена.
 +
*Запись начинается с времени указанного в параметре time.
 +
*Параметр time может использоваться как способ перемотки.
 +
*Длинна записи = <CH_PROG_END> - <CH_PROG_START>.
 +
*Начало записи = <REC_START_TIME>
 +
*Конец записи = <CH_PROG_END>
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/rec?token=<TOKEN_ID>&cid=<CH_ID>&time=<REC_START_TIME>&protected=<CODE></pre>
 +
:Обязательные параметры:
 +
::cid - ID телеканала.
 +
::time - Время с которого начинается запись.
 +
:Необязательные параметры:
 +
::protected - код родительского контроля для закрытых каналов, высылается в активационном письме. По умолчанию равен 0000 (четыре ноля).
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
  <rec>
 +
    <channel>
 +
      <id><CH_ID></id>
 +
      <name><CH_NAME></name>
 +
      <protected><CH_PROTECTED_FLAG></protected>
 +
      <title><CH_PROG_TEXT></title>
 +
      <start><CH_PROG_START></start>
 +
      <end><CH_PROG_END></end>
 +
      <records><CH_REC_HOURS></records>
 +
    </channel>
 +
    <url><REC_URL></url>
 +
  </rec>
 +
  <session>
 +
    <token><TOKEN_ID></token>
 +
    <expire><TOKEN_EXPIRE></expire>
 +
    <now><SERVERTIME></now>
 +
  </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
"rec": {
 +
"channel": {
 +
"id": <CH_ID>,
 +
"name": <CH_NAME>,
 +
"protected": <CH_PROTECTED_FLAG>,
 +
"title": <CH_PROG_TEXT>,
 +
"start": <CH_PROG_START>,
 +
"end": <CH_PROG_END>,
 +
"records": <CH_REC_HOURS>
 +
},
 +
"url": <REC_URL>
 +
},
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
 
 +
===Описание полученных данных===
 +
'''rec''' - содержит:
 +
:: '''channel''' - общая информация о канале
 +
::::'''CH_ID''' - ID канала
 +
::::'''CH_NAME''' - имя канала
 +
::::'''CH_PROTECTED_FLAG''' - указывает закрыт ли канал кодом доступа, значение 1 или 0.
 +
::::'''CH_PROG_TEXT''' - название текущей передачи
 +
::::'''CH_PROG_START''' - время начала передачи
 +
::::'''CH_PROG_END''' - время окончания передачи
 +
::::'''CH_REC_HOURS''' - наличие архива на канале в часах, 0 - архив отсутствует
 +
:: '''url'''
 +
::::'''<REC_URL>''' - прямая ссылка архивную запись
 +
 
 +
 
 +
 
 +
 
 +
==[epg] Работа с телепрограммой==
 +
 
 +
===Описание метода===
 +
Возвращает '''постраничный список телеканалов''' с телепрограммой в зависимости от указанных параметров.
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/epg?token=<TOKEN_ID>&gid=<GROUP_ID>&sort=1&limit=20&page=1</pre>
 +
:Обязательные параметры:
 +
Обязательных параметров нет, по умолчанию возвращает постраничный список всех телеканалов имеющих телепрограмму с лимитом в 20 каналов начиная с первой страницы.
 +
:Необязательные параметры
 +
::'''sort''' - способ сортировки. Доступные значения: 1 - сортировка по умолчанию, 2 - по ID канала, 3 - по имени канала.
 +
::'''desc_limit''' - лимит на количество символов в описании к телепередачам. 0 - описания выводится не будут. По умолчанию выводится полное описание при его наличии.
 +
<div style="border:1px solid #ccc;">
 +
::'''time''' - время начала программ передач. Используется в паре с параметром period. Если period не указан, то параметр time игнорируется, возвращается '''текущая передача''' для каждого канала.
 +
::'''period''' - получаем телепрограмму с начала времени time на количество часов указанных в этом параметре. Если параметр time не указан, временем начала считается начало текущих суток.
 +
::::'''или'''
 +
::'''c_to''' - взаимоисключающий с time и period параметр. Указывает на необходимое количество передач начиная с текущей. Значение от 1 до 20.
 +
</div>
 +
<div style="border:1px solid #ccc; margin-top:2px;">
 +
::'''channels''' - список каналов для которых необходимо получить телепередачу, через запятую.
 +
::::'''или'''
 +
::'''gid''' - ID категории каналов для которых необходимо получить телепередачу. Взаимоисключающий с channels параметр.
 +
</div>
 +
 
 +
===Примеры запросов===
 +
Получить текущую и три следующих телепередачи для каналов с ID 1 и ID 2
 +
<pre>http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&channels=1,2&c_to=3</pre>
 +
 
 +
Получить телепередачу для канала с ID 1 на 16 сентября 2016 года
 +
<pre>http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&channels=1&time=1473984000&period=24</pre>
 +
 
 +
Получить текущую программу передач для каналов в группе ID=1 со второй страницы по 12 каналов на страницу c описанием телепередач не более 200-т символов и отсортировать каналы по названию
 +
<pre>http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&gid=1&period=0&limit=12&page=2&desc_limit=200&sort=3</pre>
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
  <info>
 +
    <limit><ITEMS_LIMIT></limit>
 +
    <count><ITEMS_COUNT></count>
 +
      <pages><ITEMS_PAGES></pages>
 +
      <page><ITEMS_CURRENT_PAGE></page>
 +
  </info>
 +
  <epg>
 +
    <channels>
 +
      <item>
 +
        <id><CH_ID></id>
 +
        <name><CH_NAME></name>
 +
          <epg>
 +
            <item>
 +
              <text><CH_PROG_TEXT></text>
 +
              <start><CH_PROG_START></start>
 +
              <end><CH_PROG_END></end>
 +
              <description><CH_PROG_DESC></description>
 +
              <recorded>1|0</recorded>
 +
              <live>1</live>
 +
            </item>
 +
            ...
 +
          </epg>
 +
        </item>
 +
        ...
 +
    </channels>
 +
  </epg>
 +
  <session>
 +
    <token><TOKEN_ID></token>
 +
    <expire><TOKEN_EXPIRE></expire>
 +
    <now><SERVERTIME></now>
 +
  </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
  "info": {
 +
    "limit": <ITEMS_LIMIT>,
 +
    "count": <ITEMS_COUNT>,
 +
    "pages": <ITEMS_PAGES>,
 +
    "page": <ITEMS_CURRENT_PAGE>
 +
    },
 +
  "epg": {
 +
    "channels": [
 +
      {
 +
        "id": <CH_ID>,
 +
        "name": <CH_NAME>,
 +
          "epg": [
 +
          {
 +
            "text": <CH_PROG_TEXT>,
 +
            "start": <CH_PROG_START>,
 +
            "end": <CH_PROG_END>,
 +
            "description": <CH_PROG_DESC>,
 +
            "recorded": 1|0,
 +
            "live": 1
 +
          }
 +
          ...
 +
          ]
 +
      },
 +
      ...
 +
    ]
 +
  },
 +
  "session": {
 +
    "token": <TOKEN_ID>,
 +
    "expire": <TOKEN_EXPIRE>,
 +
    "now": <SERVERTIME>
 +
  }
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
 
 +
 
 +
 
 +
== [search] Поиск по программе передач==
 +
 
 +
===Описание метода===
 +
Возвращает список результатов поиска строки по названию передачи и её описанию.
 +
 
 +
===Формат запроса===
 +
 
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/search?token=<TOKEN_ID>&text=<SEARCH_TEXT>&limit=20&page=1&group=1&group_now=1&group_archive=1</pre>
 +
:Обязательные параметры:
 +
::'''text''' - Строка поиска от 3 до 40 символов.
 +
:Необязательные параметры:
 +
::'''group''' - разбивает результаты поиска на следующие группы: '''soon''' - передачи которые будут скоро, '''now''' - идут сейчас, '''archive''' - доступны в архиве.
 +
::'''limit'''=no - отключение постраничного вывода. Лимит 200 результатов.
 +
По умолчанию поиск выполняется по всем передачам, указав следующие параметры можно выбрать область поиска:
 +
::'''group_soon''' - допустимое значение 1 или 0, 1 - выполнять поиск среди передач которые ожидаются скоро.
 +
::'''group_now''' - допустимое значение 1 или 0, 1 - выполнять поиск среди передач которые идут в эфире на момент поиска.
 +
::'''group_archive''' - допустимое значение 1 или 0, 1 - выполнять поиск среди передач доступных в архиве.
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
  <search>
 +
    <item>
 +
      <ch_id><CH_ID></ch_id>
 +
      <name><CH_NAME></name>
 +
      <groups><CH_GROUPS></groups>
 +
      <protected><CH_PROTECTED_FLAG></protected>
 +
      <records><CH_REC_HOURS></records>
 +
      <favorite><CH_IS_FAVORITE></favorite>
 +
      <text><CH_PROG_TEXT></text>
 +
      <start><CH_PROG_START></start>
 +
      <end><CH_PROG_END></end>
 +
      <description><CH_PROG_DESC></description>
 +
      <weight><RANK_WEIGHT></weight>
 +
    </item>
 +
    ...
 +
  </search>
 +
  <session>
 +
    <token><TOKEN_ID></token>
 +
    <expire><TOKEN_EXPIRE></expire>
 +
    <now><SERVERTIME></now>
 +
  </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
"search": [
 +
{
 +
"ch_id": <CH_ID>,
 +
"name": <CH_NAME>,
 +
"groups": <CH_GROUPS>,
 +
"protected": <CH_PROTECTED_FLAG>,
 +
"records": <CH_REC_HOURS>,
 +
"favorite": <CH_IS_FAVORITE>,
 +
"text": <CH_PROG_TEXT>,
 +
"start": <CH_PROG_START>,
 +
"end": <CH_PROG_END>,
 +
"description": <CH_PROG_DESC>,
 +
"weight": <RANK_WEIGHT>
 +
},
 +
...
 +
],
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
===Описание полученных данных===
 +
'''channels''' - содержит массив данных
 +
 
 +
::'''CH_ID''' - ID канала
 +
::'''CH_NAME''' - имя канала
 +
::'''CH_GROUPS''' - ID категорий канала перечисленных через запятую
 +
::'''CH_PROTECTED_FLAG''' - указывает закрыт ли канал кодом доступа, значение 1 или 0.
 +
::'''CH_REC_HOURS''' - наличие архива на канале в часах, 0 - архив отсутствует
 +
::'''CH_IS_FAVORITE''' - наличие канала в избранном, значение 1 или 0.
 +
::'''CH_PROG_TEXT''' - название текущей передачи
 +
::'''CH_PROG_START''' - время начала передачи
 +
::'''CH_PROG_END''' - время окончания передачи
 +
::'''CH_PROG_DESC''' - описание передачи. Отсутствует, если описание недоступно.
 +
::'''RANK_WEIGHT''' - вес результата.
 +
 
 +
== [settings] Текущие настройки ==
 +
===Описание метода===
 +
Получение списка текущих настроек клиента
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/settings?token=<TOKEN_ID></pre>
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
  <settings>
 +
    <current>
 +
      <server>
 +
        <id><SERVER_ID></id>
 +
        <name><SERVER_NAME></name>
 +
        <load><SERVER_LOAD></load>
 +
        <power><SERVER_POWER></power>
 +
      </server>
 +
      <timezone>
 +
        <id><TZ_NAME></id>
 +
        <gmt><TZ_GMT></gmt>
 +
        <country_code><TZ_CC></country_code>
 +
      </timezone>
 +
      ...
 +
    </current>
 +
    <lists>
 +
      <servers>
 +
      <item>
 +
        <id><SERVER_ID></id>
 +
        <name><SERVER_NAME></name>
 +
        <load><SERVER_LOAD></load>
 +
        <power><SERVER_POWER></power>
 +
      </item>
 +
      ...
 +
      </servers>
 +
      <timezones>
 +
        <item>
 +
          <id><TZ_NAME></id>
 +
          <gmt><TZ_GMT></gmt>
 +
          <country_code><TZ_CC></country_code>
 +
        </item>
 +
        ...
 +
      </timezones>
 +
    </lists>
 +
  </settings>
 +
  <session>
 +
    <token><TOKEN_ID></token>
 +
    <expire><TOKEN_EXPIRE></expire>
 +
    <now><SERVERTIME></now>
 +
  </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
  "settings": {
 +
    "current": {
 +
      "server": {
 +
        "id": <SERVER_ID>,
 +
        "name": <SERVER_NAME>,
 +
        "load": <SERVER_LOAD>,
 +
        "power": <SERVER_POWER>,
 +
      },
 +
      "timezone": {
 +
        "id": <TZ_NAME>,
 +
        "gmt": <TZ_GMT>,
 +
        "country_code": <TZ_CC>
 +
      }
 +
      ...
 +
    },
 +
    "lists": {
 +
      "servers": [
 +
      {
 +
        "id": <SERVER_ID>,
 +
        "name": <SERVER_NAME>,
 +
        "load": <SERVER_LOAD>,
 +
        "power": <SERVER_POWER>,
 +
      },
 +
      ...
 +
      ],
 +
      "timezones": [
 +
      {
 +
        "id": <TZ_NAME>,
 +
        "gmt": <TZ_GMT>,
 +
        "country_code": <TZ_CC>
 +
      },
 +
      ...
 +
      ]
 +
    }
 +
  },
 +
  "session": {
 +
    "token": <TOKEN_ID>,
 +
    "expire": <TOKEN_EXPIRE>,
 +
    "now": <SERVERTIME>
 +
  }
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
===Описание полученных данных===
 +
'''settings''' - содержит:
 +
:: '''current''' - список текущих настроек пользователя
 +
::: '''server''' - текущий сервер
 +
::::'''SERVER_ID''' - ID сервера
 +
::::'''SERVER_NAME''' - отображаемое имя сервера
 +
::::'''SERVER_LOAD''' - нагрузка на сервер в процентах
 +
::::'''SERVER_POWER''' - мощность сервера
 +
::: '''timezone''' - текущий часовой пояс
 +
::::'''TZ_NAME''' - имя временной зоны
 +
::::'''TZ_GMT''' - смещение временной зоны относительно Гринвича
 +
::::'''TZ_CC''' - двухбуквенный код страны для часового пояса
 +
:: '''list''' - списки возможных доступных значений
 +
::: '''servers''' - список доступных серверов
 +
::: '''timezones''' - список доступных временных зон
 +
 
 +
== [set] Изменение текущих настроек ==
 +
===Описание метода===
 +
Изменение текущих настроек клиента
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set?token=<TOKEN_ID>&timezone=<TZ_NAME>&server=<SERVER_ID>&new_code=<NEW_CODE>&old_code=<OLD_CODE></pre>
 +
 
 +
===Пример запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set?token=<TOKEN_ID>&timezone=Europe/Dublin&server=1&new_code=1111&old_code=0000</pre>
 +
 
 +
Возможные параметры:
 +
::timezone - имя временной зоны
 +
::server - ID сервера вещания
 +
::new_code - новый код доступа, должен содержать 4 цифры. Используется в паре с параметром old_code
 +
::old_code - текущий код доступа (код родительского контроля)
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
    <settings>
 +
        <updated>1</updated>
 +
        <current>
 +
            <timezone>
 +
                <id><TZ_NAME></id>
 +
                <gmt><TZ_GMT></gmt>
 +
                <country_code><TZ_CC></country_code>
 +
            </timezone>
 +
            <server>
 +
                <id><SERVER_ID></id>
 +
                <name><SERVER_NAME></name>
 +
                <load><SERVER_LOAD></load>
 +
                <power><SERVER_POWER></power>
 +
            </server>
 +
            <code>
 +
                <updated>1|0</updated>
 +
            </code>
 +
        </current>
 +
    </settings>
 +
    <session>
 +
        <token><TOKEN_ID></token>
 +
        <expire><TOKEN_EXPIRE></expire>
 +
        <now><SERVERTIME></now>
 +
    </session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
    "settings": {
 +
        "updated": 1|0,
 +
        "current": {
 +
            "timezone": {
 +
                "id": <TZ_NAME>,
 +
                "gmt": <TZ_GMT>,
 +
                "country_code": <TZ_CC>
 +
            },
 +
            "server": {
 +
                "id": <SERVER_ID>,
 +
                "name": <SERVER_NAME>
 +
                "load": <SERVER_LOAD>
 +
                "power": <SERVER_POWER>
 +
            },
 +
            "code": {
 +
                "updated": 1|0
 +
            }
 +
        }
 +
    },
 +
  "session": {
 +
        "token": <TOKEN_ID>,
 +
        "expire": <TOKEN_EXPIRE>,
 +
        "now": <SERVERTIME>
 +
    }
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
===Описание полученных данных===
 +
'''settings''' - содержит:
 +
:: '''updated'''- 1 в случае успеха изменения настроек или 0
 +
:: '''current''' - список измененных настроек пользователя
 +
::: '''server''' - текущий сервер
 +
::::'''SERVER_ID''' - ID сервера
 +
::::'''SERVER_NAME''' - отображаемое имя сервера
 +
::::'''SERVER_LOAD''' - нагрузка на сервер в процентах
 +
::::'''SERVER_POWER''' - мощность сервера в условных единицах
 +
::: '''timezone''' - текущий часовой пояс
 +
::::'''TZ_NAME''' - имя временной зоны
 +
::::'''TZ_GMT''' - смещение временной зоны относительно Гринвича
 +
::::'''TZ_CC''' - двухбуквенный код страны для часового пояса
 +
:: '''code''' - код безопасности
 +
::: '''updated''' - 1 в случае успеха или 0
 +
 
 +
== [favorites] Избранное ==
 +
===Описание метода===
 +
Возвращает массив доступных для клиента ID избранных каналов.
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/favorites?token=<TOKEN_ID></pre>
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
<favorites>
 +
<item><CH_ID></item>
 +
<item><CH_ID></item>
 +
...
 +
<item><CH_ID></item>
 +
</favorites>
 +
<session>
 +
<token><TOKEN_ID></token>
 +
<expire><TOKEN_EXPIRE></expire>
 +
<now><SERVERTIME></now>
 +
</session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>{
 +
    "favorites": [
 +
        <CH_ID>,
 +
        <CH_ID>,
 +
        ...
 +
        <CH_ID>
 +
    ],
 +
    "session": {
 +
        "token": <TOKEN_ID>,
 +
        "expire": <TOKEN_EXPIRE>,
 +
        "now": <SERVERTIME>
 +
    }
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
===Описание полученных данных===
 +
'''favorites''' - содержит:
 +
:: '''CH_ID''' - ID канала
 +
 
 +
 
 +
 
 +
 
 +
 
 +
== [set_favorites] Работа со списком избранного ==
 +
===Описание метода===
 +
Возвращает массив доступных для клиента ID избранных каналов.
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set_favorites?token=<TOKEN_ID>&cid=<CH_ID>&pos=<CH_FAV_POS>&show_current</pre>
 +
или
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set_favorites?token=<TOKEN_ID>&set=<CH_ID>,<CH_ID>,...<CH_ID>&show_current</pre>
 +
:Обязательные параметры:
 +
::'''cid''' - ID канала.
 +
:Необязательные параметры:
 +
::'''set''' - список ID каналов через запятую для установки нового списка избранного из указаных каналов в указанном порядке или 0 для полной очистки списка избранного.
 +
::'''pos''' - позиция канала в списке избранного. Отсчет начинается от 1. Если параметр не указан или равен 0, то cid удаляется из списка избранного клиента. Может принимать следующие значения:
 +
::::[0-9]+ - позиция в которую нужно переместить\вставить канал в списке;
 +
::::0 или del - удалить канал из списка;
 +
::::first - переместить\вставить канал в начало списка;
 +
::::last - переместить\вставить канал в конец списка;
 +
::'''show_curren'''t - показать список избранного после изменений
 +
''Примечание:'' '''set''' и '''cid''' (+'''pos''') являются взаимоисключающими параметрами. Если указан '''set''', то параметры '''cid''' и '''pos''' будут проигнорированы
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
<favorites>
 +
<updated>1|0</updated>
 +
<current>
 +
<item><CH_ID></item>
 +
<item><CH_ID></item>
 +
...
 +
<item><CH_ID></item>
 +
</current>
 +
</favorites>
 +
<session>
 +
<token><TOKEN_ID></token>
 +
<expire><TOKEN_EXPIRE></expire>
 +
<now><SERVERTIME></now>
 +
</session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>
 +
{
 +
"favorites": {
 +
"updated": 1|0,
 +
"current": [
 +
<CH_ID>,
 +
<CH_ID>,
 +
...
 +
<CH_ID>
 +
]
 +
},
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
===Описание полученных данных===
 +
'''favorites''' - содержит:
 +
:: '''CH_ID''' - ID канала
 +
 
 +
== [news] Новости сервиса ==
 +
===Описание метода===
 +
Возвращает последние 10 новостей сервиса.
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/news?token=<TOKEN_ID>&type=plain</pre>
 +
:Необязательные параметры:
 +
::type - тип отображения содержимого. По умолчанию возвращает контент в виде html. Доступные значения: plain - отображение контента в виде текста.
 +
::id - NEWS_ID (ID новости). Отображение одной новости с указанным ID.
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
<news>
 +
<item>
 +
<id><NEWS_ID></id>
 +
<date><NEWS_DATE></date>
 +
<title><NEWS_TITLE></title>
 +
<text><NEWS_TEXT></text>
 +
</item>
 +
...
 +
</news>
 +
<session>
 +
<token><TOKEN_ID></token>
 +
<expire><TOKEN_EXPIRE></expire>
 +
<now><SERVERTIME></now>
 +
</session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>
 +
{
 +
"news": [
 +
{
 +
"id": <NEWS_ID>,
 +
"date": <NEWS_DATE>,
 +
"title": <NEWS_TITLE>,
 +
"text": <NEWS_TEXT>
 +
},
 +
...
 +
],
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
 +
 
 +
: '''NEWS_ID''' - уникальный ID новости
 +
: '''NEWS_DATE''' - дата создания новости
 +
: '''NEWS_TITLE''' - название новости
 +
: '''NEWS_TEXT''' - текст новости
 +
 
 +
== [error_codes] Коды ошибок ==
 +
===Описание метода===
 +
Возвращает все доступные коды ошибок. Авторизация и token не требуются.
 +
 
 +
===Формат запроса===
 +
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/error_codes</pre>
 +
 
 +
===Формат полученных данных===
 +
{| class="wikitable" style="float:left; margin-right:20px"
 +
|+XML
 +
|-
 +
|<pre>
 +
<response>
 +
<error_codes>
 +
<item>
 +
<code><ERROR_CODE_ID></code>
 +
<msg><ERROR_CODE_MSG></msg>
 +
</item>
 +
...
 +
</error_codes>
 +
<session>
 +
<token><TOKEN_ID></token>
 +
<expire><TOKEN_EXPIRE></expire>
 +
<now><SERVERTIME></now>
 +
</session>
 +
</response>
 +
</pre>
 +
|}
 +
{| class="wikitable"
 +
|+JSON
 +
|-
 +
|<pre>
 +
{
 +
"error_codes": [
 +
{
 +
"code": <ERROR_CODE_ID>,
 +
"msg": <ERROR_CODE_MSG>
 +
},
 +
...
 +
],
 +
"session": {
 +
"token": <TOKEN_ID>,
 +
"expire": <TOKEN_EXPIRE>,
 +
"now": <SERVERTIME>
 +
}
 +
}
 +
</pre>
 +
|}
 +
<div style="clear:both"></div>
  
time<br/>
+
: '''ERROR_CODE_ID''' - уникальный номер ошибки
@time - epg start time, unixtime<br/>
+
: '''ERROR_CODE_MSG''' - текст ошибки
@period - epg time to period, hours<br/>
 
@channels - epg for channels ex.: 1,2,3<br/>
 
or @gid - all channels in this group id<br/>
 
@desc_limit - int, 0 - off, 200 - max<br/>
 
@limit<br/>
 
@start<br/>
 
@page<br/>
 
@sort - 1|2|3
 

Текущая версия на 17:20, 17 ноября 2018

Содержание

Изменения

12.10.2017

  • Для метода groups добавлен необязательный параметр favorites для отображения группы "Избранное" в списке.

27.09.2017

  • Изменение в описании спрайтов.

10.09.2017

  • Добавлены спрайты логотипов каналов.

21.08.2017

  • Обновлен метод search, добавлены параметры group_soon, group_now, group_archive.

20.08.2017

  • Добавлен метод search для поиска по программе передач

23.06.2017

  • Для метода channels добавлен параметр epg, который может принимать единственное значение epg=no и служит для отключения секции epg в выводе. Например, для оптимизации и ускорения вывода списка каналов, когда информация о EPG не требуется.
  • В метод account -> info добавлены значения:
id - лицевой счет клиента.
balance - неиспользованный баланс клиента.

01.05.2017

  • Для метода set_favorites добавлен параметр set. В качестве аргумента могут выступать:
a) Список ID каналов через запятую для установки нового списка избранного состоящего из указанных каналов в указанном порядке.
b) 0 - для полной очистки списка избранного.

21.03.2017

  • Для метода channels параметр gid может быть равным 100 (gid=100) - это позволяет получить список избранного как группы.

20.02.2017

  • Для метода channels добавлен параметр filter_cname - фильтр по названию канала.
  • В метод epg -> channels -> epg добавлены значения:
recorded - указатель наличия архива передачи.
live - 1 если передача идет на текущий момент, отсутствует если иначе.

Описание

В данной статье описывается возможное взаимодействие между клиентом и сервером API сервиса TVclub.us. Данное API проходит стадию тестирования, может изменяться и дополняться без предварительного уведомления. По всем вопросам, просьбам и предложениям пишите на почту support@tvclub.us.

Приглашаем разработчиков для тестирования API


При использовании данного API, сервис TVClub.us оставляет за собой право размещения ссылки и/или архива файлов (плагинов, приложений, виджетов и прочего ПО) использующих данное API с указанием разработчика.

Требования

  • Поддержка HTTP 1.0
  • Поддержка HTTP redirect (301,302)
  • Поддержка XML или JSON форматов данных
  • Поддержка видео-кодека H.264, аудио-кодека AAC, контейнеров mpeg-ts и mp4

Договоренности

  • Все временные метки только в формате Unixtime
  • Boolean значение имеет следующее обозначение: положительное - 1, отрицательное - 0»
  • Кодировка UTF8.

Общие обозначения

  • <FORMAT_TYPE> - формат возврата ответа от сервера. Доступны формат XML и JSON.
  • <API_VERSION> - Версия API. Текущая версия 0.8
  • <SERVERTIME> - Текущее время на сервере.
  • <TOKEN_ID> - Уникальный ключ token полученный в результате авторизации.
  • <TOKEN_EXPIRE> - время до которого ключ token будет актуален.

Постраничный вывод

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

limit - лимит количества записей для одной выборки для опорной единицы. Например - количество каналов метода epg. Значение может быть от 1 до 200.
start - номер элемента опорной единицы с которого производится выборка. Параметр не учитывается, если иcпользуется параметр page.
page - номер страницы для постраничного вывода.

Пример запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/<API_METHOD>?hash=<HASH>&limit=14&page=3

Формат полученных данных

XML
<response>
	<info>
		<limit><ITEMS_LIMIT></limit>
		<count><ITEMS_COUNT></count>
		<pages><ITEMS_PAGES></pages>
		<page><ITEMS_CURRENT_PAGE></page>
	</info>
	<API_METHOD>
	...
	</API_METHOD>
	<session>
		<token><TOKEN_ID></token>
		<expire><TOKEN_EXPIRE></expire>
		<now><SERVERTIME></now>
	</session>
</response>
JSON
{
	"info": {
		"limit": <ITEMS_LIMIT>,
		"count": <ITEMS_COUNT>,
		"pages": <ITEMS_PAGES>,
		"page": <ITEMS_CURRENT_PAGE>
	},
	<API_METHOD>: {
		...
	},
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}
info - информация о постраничном выводе
ITEMS_LIMIT - общее количество записей
ITEMS_COUNT - количество единиц на текущей странице
ITEMS_PAGES - общее количество страниц
ITEMS_CURRENT_PAGE - номер текущей страницы

Логотипы каналов

Доступны несколько размеров и форматов логотипов.

Получить иконку для канала с ID = CH_ID и в формате LOGO_FORMAT можно с помощью URL:

http://api.iptv.so/logo/<LOGO_FORMAT>/<CH_ID>.png

Доступные форматы:

*original - 490x280 без рамки
*490_280_1 - 490x280 c рамкой


  • original - 490x280 без рамки
  • 490_280_1 - 490x280 с рамкой
  • 36_36_0 - 36x36 без рамки
  • 36_36_1 - 36x36 с рамкой
  • 48_48_0 - 48x48 без рамки
  • 48_48_1 - 48x48 с рамкой
  • 72_72_0 - 72x72 без рамки
  • 72_72_1 - 72x72 с рамкой
  • 90_50_0 - 90x50 без рамки
  • 90_50_1 - 90x50 с рамкой
  • 96_96_0 - 96x96 без рамки
  • 96_96_1 - 96x96 с рамкой
  • 200_115_0 - 200x115 без рамки
  • 200_115_1 - 200x115 с рамкой
  • 300_170_0 - 300x170 без рамки
  • 300_170_1 - 300x170 с рамкой


Спрайты логотипов

Sprite Sheet — это одно большое изображение мелких графических элементов, в данном случае - это логотипы каналов. Благодаря CSS можно отображать каждый элемент отдельно не загружая при этом массу мелких изображений. Главным преимуществом использования спрайтов является однократная загрузка клиентом сразу всех элементов в одном файле тем самым значительно сокращая количество HTTP-запросов к серверу.

Доступные форматы <SPRITE_FORMAT>:

  • 90_50_0 - 90x50 без рамки
  • 90_50_1 - 90x50 с рамкой

Получить спрайт иконок размером <SPRITE_FORMAT> можно с помощью URL:

http://api.iptv.so/sprite/<SPRITE_FORMAT>.png

Позиции иконок в спрайте указаны в файле:

http://api.iptv.so/sprite/<SPRITE_FORMAT>.json

Файл представляет собой массив данных в json формате:

{"name":"<SPRITE_FORMAT>","size":"<SPRITE_SIZE>","nums":"<SPRITE_ROWS>","hash":"<SPRITE_HASH>","data": {"<CH_ID>": {"x":<CORD_X>,"y":<CORD_Y>,"a":<POS_X>,"b":<POS_Y>}, ...}}

Где:

<SPRITE_SIZE> - размер спрайта в пикселях.
<SPRITE_ROWS> - количество логотипов в спрайте по ширине и высоте.
<SPRITE_HASH> - уникальный хеш спрайта, используется для сверки изменений. Если хеш изменился, необходимо загрузить спрайт снова так как он был изменен.
<CH_ID> - ID канала.
<CORD_X> - координаты логотипа по оси X.
<CORD_Y> - координаты логотипа по оси Y.
<POS_X> - позиция от левого верхнего угла в пикселях по оси X.
<POS_Y> - позиция от левого верхнего угла в пикселях по оси Y.

Если по какой-то причине не обнаружены координаты необходимого логотипа, используйте позицию X=0 и Y=0 для установки заглушки "No Image" из спрайта. Такое может случится, например, если были добавлены новые каналы, а спрайты еще не сгенерированы.

Методы

[auth] Авторизация

Внимание!
06.01.2017 были внесены изменения в алгоритм авторизации. Token, ключ, который используется для вызова остальных процедур API, теперь всегда равен MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>)). Таким образом в этапе авторизации теперь нет необходимости и этот шаг можно (нужно) пропустить, так как зная логин и пароль известен и token. А для получении информации об аккаунте используется метод account.

Описание метода

(ДО 06.01.2017!!!) Самым первым запросом на сервер API всегда должен быть запрос на авторизацию клиента. В случае успеха, сервер вернет информацию о аккаунте клиента и информации о созданной сессии в которой содержится уникальный ключ - token, для доступа к остальным методам API. Без этого ключа вызов других методов API невозможен.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/auth?hash=<HASH>

HASH - это MD5-хеш полученный в результате конкатенации логина пользователя и MD5-хеша пароля пользователя - MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>))

Примеры запроса

PHP

$data=file_get_contents('http://api.iptv.so/0.8/xml/auth?hash='.MD5($login.MD5($password)));


Формат полученных данных

XML
  <response>
    <account>
      <info>
        <id><USER_ID></id>
        <login><USER_LOGIN></login>
        <mail><USER_EMAIL></mail>
        <name><USER_NAME></name>
        <balance><USER_BALANCE></balance>
      </info>
      <options>
        <OPTION_NAME>1|0</OPTION_NAME>
        ...
      </options>
      <services>
        <item>
          <id><SERVICE_ID></id>
          <expire><SERVICE_EXPIRE></expire>
          <name><SERVICE_NAME></name>
          <type><SERVICE_TYPE></type>
        </item>
        ...
      </services>
      <settings>
        <server_id><SERVER_ID></server_id>
        <server_name><SERVER_NAME></server_name>
        <tz_name><TZ_NAME></tz_name>
        <tz_gmt><TZ_GMT></tz_gmt>
      </settings>
    </account>
    <session>
      <token><TOKEN_ID></token>
      <expire><TOKEN_EXPIRE></expire>
      <now><SERVERTIME></now>
    </session>
</response>
JSON
{	
    "account": {
		"info": {
			"id": <USER_ID>,
			"login": <USER_LOGIN>,
			"mail": <USER_EMAIL>,
			"name": <USER_NAME>,
			"balance": <USER_BALANCE>,
		},
		"options": {
			<OPTION_NAME>: 1|0,
			...
		},
		"services": [
			{
				"id": <SERVICE_ID>,
				"expire": <SERVICE_EXPIRE>,
				"name": <SERVICE_NAME>,
				"type": <SERVICE_TYPE>
			},
			...
		],
		"settings": {
			"server_id": <SERVER_ID>,
			"server_name": <SERVER_NAME>,
			"tz_name": <TZ_NAME>,
			"tz_gmt": <TZ_GMT>
		}
	},
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}

Описание полученных данных

account - содержит в себе

info - информация о аккаунте клиента
USER_ID - лицевой счет клиента
USER_LOGIN - логин клиента
USER_EMAIL - e-mail клиента
USER_NAME - имя клиента
USER_BALANCE - неиспользованный баланс клиента
options - список доступных
OPTION_NAME - имя опции, может принимать значение 1 - доступно или 0 - недоступно для клиента.
services - список доступных для клиента сервисов, может содержать несколько вложенных элементов item удовлетворяющих следующему описанию:
SERVICE_ID - уникальный ID сервиса
SERVICE_EXPIRE - срок истечения подписки на сервис
SERVICE_NAME - имя сервиса
SERVICE_TYPE - тип сервиса [пакет каналов, опция, плейлист]
settings - текущие настройки клиента
SERVER_ID - ID сервера вещания
SERVER_NAME - отображаемое имя сервера вещания
TZ_NAME - имя временной зоны
TZ_GMT - смещение временной зоны относительно Гринвича

session - описание текущей сессии

TOKEN_ID - ключ доступа который используется для вызова всех остальных методов API
TOKEN_EXPIRE - время до которого действителен текущий ключ доступа. При каждом успешном запросе срок жизни ключа продлевается до 24-х часов с текущей даты.
SERVERTIME - текущее время на сервере

[account] Аккаунт

Описание метода

Возвращает ту же информацию, что и метод auth. Может использоваться для получения текущей информации об аккаунте без повторной авторизации.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/account?token=<TOKEN_ID>



[logout] Закрытие сессии

Описание метода

Метод уничтожает текущую сессию и все данные хранящиеся в ней.


Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/logout?token=<TOKEN_ID>


Формат полученных данных

XML
<response>
  <session>
    <destroyed>1</destroyed>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
	"session": {
		"destroyed": 1,
		"now": <SERVERTIME>
	}
}



[groups] Список ТВ категорий

Описание метода

Возвращает полный список доступных для клиента ТВ категорий.


Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/groups?token=<TOKEN_ID>
Необязательные параметры:
favorites - если параметр присутствует и равен 1, то отображать в списке группу "Избранное".

Формат полученных данных

XML
<response>
  <groups>
    <item>
      <name_ru><GROUP_ID></name_ru>
      <name_ru><GROUP_NAME_RU></name_ru>
      <name_en><GROUP_NAME_EN></name_en>
      <count><GROUP_CHANNELS_COUNT></count>
    </item>
    ...
  </groups>
  <session>
    <token><TOKEN_ID></token>
    <expire><TOKEN_EXPIRE></expire>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
	"groups": [
		{
			"id": <GROUP_ID>,
			"name_ru": <GROUP_NAME_RU>,
			"name_en": <GROUP_NAME_EN>,
			"count": <GROUP_CHANNELS_COUNT>
		},
		...
	],
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}


Описание полученных данных

groups - содержит в себе

GROUP_ID - ID группы
GROUP_NAME_RU - Имя группы на русском языке
GROUP_NAME_EN - Имя группы на английском языке
GROUP_CHANNELS_COUNT - Количество каналов доступных для клиента в этой группе

[channels] Список каналов в группе

Описание метода

Возвращает постраничный список доступных для клиента каналов в определенной категории.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/channels?token=<TOKEN_ID>&gid=<GROUP_ID>&sort=1&limit=20&page=1
Обязательные параметры:
gid - ID группы каналов. gid=100 для вывода избранного как группы каналов.
Необязательные параметры:
sort - способ сортировки. Доступные значения: 1 - сортировка по умолчанию, 2 - по ID канала, 3 - по имени канала.
filter_cname - фильтр по названию канала.
epg - для ускорения обработки запроса при необходимости можно отключить вывод секции epg на каналах указав параметр epg=no.

Формат полученных данных

XML
<response>
  <channels>
    <item>
      <info>
        <id><CH_ID></id>
        <name><CH_NAME></name>
        <groups><CH_GROUPS></groups>
        <protected><CH_PROTECTED_FLAG></protected>
        <records><CH_REC_HOURS></records>
        <favorite><CH_IS_FAVORITE></favorite>
      </info>
      <epg>
        <text><CH_PROG_TEXT></text>
        <start><CH_PROG_START></start>
        <end><CH_PROG_END></end>
        <description><CH_PROG_DESC></description>
      </epg>
    </item>
    ...
  </channels>
  <session>
    <token><TOKEN_ID></token>
    <expire><TOKEN_EXPIRE></expire>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
	"channels": [
		{
			"info": {
				"id": <CH_ID>,
				"name": <CH_NAME>,
				"groups": <CH_GROUPS>,
				"protected": <CH_PROTECTED_FLAG>,
				"records": <CH_REC_HOURS>,
				"favorite": <CH_IS_FAVORITE>,
			},
			"epg": [
				"text": <CH_PROG_TEXT>,
				"start": <CH_PROG_START>,
				"end": <CH_PROG_END>,
				"description": <CH_PROG_DESC>
			]
		},
		...
	],
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}

Описание полученных данных

channels - содержит массив данных

info - общая информация о канале
CH_ID - ID канала
CH_NAME - имя канала
CH_GROUPS - ID категорий канала перечисленных через запятую
CH_PROTECTED_FLAG - указывает закрыт ли канал кодом доступа, значение 1 или 0.
CH_REC_HOURS - наличие архива на канале в часах, 0 - архив отсутствует
CH_IS_FAVORITE - наличие канала в избранном, значение 1 или 0.
epg - информация о текущей программе передач. Пустой элемент, если телепрограмма не доступна.
CH_PROG_TEXT - название текущей передачи
CH_PROG_START - время начала передачи
CH_PROG_END - время окончания передачи
CH_PROG_DESC - описание передачи. Отсутствует, если описание недоступно.

[servers] Список доступных серверов

Описание метода

Получение списка доступных серверов

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/servers?token=<TOKEN_ID>

Формат полученных данных

XML
<response>
  <servers>
    <item>
      <id><SERVER_ID></id>
      <name><SERVER_NAME></name>
      <load><SERVER_LOAD></load>
      <power><SERVER_POWER></power>
    </item>
    ...
  </servers>
  <session>
    <token><TOKEN_ID></token>
    <expire><TOKEN_EXPIRE></expire>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
   "servers": [
       {
         "id": <SERVER_ID>,
         "name": <SERVER_NAME>,
         "load": <SERVER_LOAD>,
         "power": <SERVER_POWER>,
       },
       ...
      ],
  "session": {
    "token": <TOKEN_ID>,
    "expire": <TOKEN_EXPIRE>,
    "now": <SERVERTIME>
  }
}

Описание полученных данных

servers - содержит:

SERVER_ID - ID сервера
SERVER_NAME - отображаемое имя сервера
SERVER_LOAD - нагрузка на сервер в процентах
SERVER_POWER - мощность сервера



[live] Получение ссылки на прямую трансляцию

Описание метода

Метод возвращает краткую информацию по каналу и ссылку на поток его прямой трансляции.

  • Ссылка на поток должна быть использована в течении 5 минут
  • Ссылка на поток привязана к IP клиента полученного в результате его запроса на сервер API.
  • Ссылка на поток привязана к серверу вещания для которого она была получена.


Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/live?token=<TOKEN_ID>&cid=<CH_ID>&protected=<CODE>
Обязательные параметры:
cid - ID телеканала.
Необязательные параметры:
protected - код родительского контроля, высылается в активационном письме. По умолчанию равен 0000 (четыре ноля).

Формат полученных данных

XML
<response>
  <live>
    <channel>
      <id><CH_ID></id>
      <name><CH_NAME></name>
      <protected><CH_PROTECTED_FLAG></protected>
      <records><CH_REC_HOURS></records>
    </channel>
    <url><LIVE_URL></url>
  </live>
  <session>
    <token><TOKEN_ID></token>
    <expire><TOKEN_EXPIRE></expire>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
	"live": {
		"channel": {
			"id": <CH_ID>,
			"name": <CH_NAME>,
			"protected": <CH_PROTECTED_FLAG>,
			"records": <CH_REC_HOURS>
		},
		"url": <LIVE_URL>
	},
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}


Описание полученных данных

live - содержит:

channel - общая информация о канале
CH_ID - ID канала
CH_NAME - имя канала
CH_PROTECTED_FLAG - указывает закрыт ли канал кодом доступа, значение 1 или 0.
CH_REC_HOURS - наличие архива на канале в часах, 0 - архив отсутствует
url
<LIVE_URL> - прямая ссылка на прямую трансляцию



[rec] Получение ссылки на запись

Описание метода

Метод возвращает краткую информацию по каналу, информацию о текущей программе передач на указанную дату и ссылку на архивную запись.

  • Ссылка на поток должна быть использована в течении 5 минут
  • Ссылка на поток привязана к IP клиента полученного в результате его запроса на сервер API.
  • Ссылка на поток привязана к серверу вещания для которого она была получена.
  • Запись начинается с времени указанного в параметре time.
  • Параметр time может использоваться как способ перемотки.
  • Длинна записи = <CH_PROG_END> - <CH_PROG_START>.
  • Начало записи = <REC_START_TIME>
  • Конец записи = <CH_PROG_END>

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/rec?token=<TOKEN_ID>&cid=<CH_ID>&time=<REC_START_TIME>&protected=<CODE>
Обязательные параметры:
cid - ID телеканала.
time - Время с которого начинается запись.
Необязательные параметры:
protected - код родительского контроля для закрытых каналов, высылается в активационном письме. По умолчанию равен 0000 (четыре ноля).

Формат полученных данных

XML
<response>
  <rec>
    <channel>
      <id><CH_ID></id>
      <name><CH_NAME></name>
      <protected><CH_PROTECTED_FLAG></protected>
      <title><CH_PROG_TEXT></title>
      <start><CH_PROG_START></start>
      <end><CH_PROG_END></end>
      <records><CH_REC_HOURS></records>
    </channel>
    <url><REC_URL></url>
  </rec>
  <session>
    <token><TOKEN_ID></token>
    <expire><TOKEN_EXPIRE></expire>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
	"rec": {
		"channel": {
			"id": <CH_ID>,
			"name": <CH_NAME>,
			"protected": <CH_PROTECTED_FLAG>,
			"title": <CH_PROG_TEXT>,
			"start": <CH_PROG_START>,
			"end": <CH_PROG_END>,
			"records": <CH_REC_HOURS>
		},
		"url": <REC_URL>
	},
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}


Описание полученных данных

rec - содержит:

channel - общая информация о канале
CH_ID - ID канала
CH_NAME - имя канала
CH_PROTECTED_FLAG - указывает закрыт ли канал кодом доступа, значение 1 или 0.
CH_PROG_TEXT - название текущей передачи
CH_PROG_START - время начала передачи
CH_PROG_END - время окончания передачи
CH_REC_HOURS - наличие архива на канале в часах, 0 - архив отсутствует
url
<REC_URL> - прямая ссылка архивную запись



[epg] Работа с телепрограммой

Описание метода

Возвращает постраничный список телеканалов с телепрограммой в зависимости от указанных параметров.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/epg?token=<TOKEN_ID>&gid=<GROUP_ID>&sort=1&limit=20&page=1
Обязательные параметры:

Обязательных параметров нет, по умолчанию возвращает постраничный список всех телеканалов имеющих телепрограмму с лимитом в 20 каналов начиная с первой страницы.

Необязательные параметры
sort - способ сортировки. Доступные значения: 1 - сортировка по умолчанию, 2 - по ID канала, 3 - по имени канала.
desc_limit - лимит на количество символов в описании к телепередачам. 0 - описания выводится не будут. По умолчанию выводится полное описание при его наличии.
time - время начала программ передач. Используется в паре с параметром period. Если period не указан, то параметр time игнорируется, возвращается текущая передача для каждого канала.
period - получаем телепрограмму с начала времени time на количество часов указанных в этом параметре. Если параметр time не указан, временем начала считается начало текущих суток.
или
c_to - взаимоисключающий с time и period параметр. Указывает на необходимое количество передач начиная с текущей. Значение от 1 до 20.
channels - список каналов для которых необходимо получить телепередачу, через запятую.
или
gid - ID категории каналов для которых необходимо получить телепередачу. Взаимоисключающий с channels параметр.

Примеры запросов

Получить текущую и три следующих телепередачи для каналов с ID 1 и ID 2

http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&channels=1,2&c_to=3

Получить телепередачу для канала с ID 1 на 16 сентября 2016 года

http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&channels=1&time=1473984000&period=24

Получить текущую программу передач для каналов в группе ID=1 со второй страницы по 12 каналов на страницу c описанием телепередач не более 200-т символов и отсортировать каналы по названию

http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&gid=1&period=0&limit=12&page=2&desc_limit=200&sort=3

Формат полученных данных

XML
<response>
  <info>
    <limit><ITEMS_LIMIT></limit>
    <count><ITEMS_COUNT></count>
      <pages><ITEMS_PAGES></pages>
      <page><ITEMS_CURRENT_PAGE></page>
  </info>
  <epg>
    <channels>
      <item>
        <id><CH_ID></id>
        <name><CH_NAME></name>
          <epg>
            <item>
              <text><CH_PROG_TEXT></text>
              <start><CH_PROG_START></start>
              <end><CH_PROG_END></end>
              <description><CH_PROG_DESC></description>
              <recorded>1|0</recorded>
              <live>1</live>
            </item>
            ...
          </epg>
        </item>
        ...
    </channels>
  </epg>
  <session>
    <token><TOKEN_ID></token>
    <expire><TOKEN_EXPIRE></expire>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
  "info": {
    "limit": <ITEMS_LIMIT>,
    "count": <ITEMS_COUNT>,
    "pages": <ITEMS_PAGES>,
    "page": <ITEMS_CURRENT_PAGE>
    },
  "epg": {
    "channels": [
      {
        "id": <CH_ID>,
        "name": <CH_NAME>,
          "epg": [
           {
             "text": <CH_PROG_TEXT>,
             "start": <CH_PROG_START>,
             "end": <CH_PROG_END>,
             "description": <CH_PROG_DESC>,
             "recorded": 1|0,
             "live": 1
           }
           ...
          ]
      },
      ...
    ]
  },
  "session": {
    "token": <TOKEN_ID>,
    "expire": <TOKEN_EXPIRE>,
    "now": <SERVERTIME>
  }
}



[search] Поиск по программе передач

Описание метода

Возвращает список результатов поиска строки по названию передачи и её описанию.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/search?token=<TOKEN_ID>&text=<SEARCH_TEXT>&limit=20&page=1&group=1&group_now=1&group_archive=1
Обязательные параметры:
text - Строка поиска от 3 до 40 символов.
Необязательные параметры:
group - разбивает результаты поиска на следующие группы: soon - передачи которые будут скоро, now - идут сейчас, archive - доступны в архиве.
limit=no - отключение постраничного вывода. Лимит 200 результатов.

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

group_soon - допустимое значение 1 или 0, 1 - выполнять поиск среди передач которые ожидаются скоро.
group_now - допустимое значение 1 или 0, 1 - выполнять поиск среди передач которые идут в эфире на момент поиска.
group_archive - допустимое значение 1 или 0, 1 - выполнять поиск среди передач доступных в архиве.

Формат полученных данных

XML
<response>
  <search>
    <item>
       <ch_id><CH_ID></ch_id>
       <name><CH_NAME></name>
       <groups><CH_GROUPS></groups>
       <protected><CH_PROTECTED_FLAG></protected>
       <records><CH_REC_HOURS></records>
       <favorite><CH_IS_FAVORITE></favorite>
       <text><CH_PROG_TEXT></text>
       <start><CH_PROG_START></start>
       <end><CH_PROG_END></end>
       <description><CH_PROG_DESC></description>
       <weight><RANK_WEIGHT></weight>
    </item>
    ...
  </search>
  <session>
    <token><TOKEN_ID></token>
    <expire><TOKEN_EXPIRE></expire>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
	"search": [
		{
			"ch_id": <CH_ID>,
			"name": <CH_NAME>,
			"groups": <CH_GROUPS>,
			"protected": <CH_PROTECTED_FLAG>,
			"records": <CH_REC_HOURS>,
			"favorite": <CH_IS_FAVORITE>,
			"text": <CH_PROG_TEXT>,
			"start": <CH_PROG_START>,
			"end": <CH_PROG_END>,
			"description": <CH_PROG_DESC>,
			"weight": <RANK_WEIGHT>
		},
		...
	],
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}

Описание полученных данных

channels - содержит массив данных

CH_ID - ID канала
CH_NAME - имя канала
CH_GROUPS - ID категорий канала перечисленных через запятую
CH_PROTECTED_FLAG - указывает закрыт ли канал кодом доступа, значение 1 или 0.
CH_REC_HOURS - наличие архива на канале в часах, 0 - архив отсутствует
CH_IS_FAVORITE - наличие канала в избранном, значение 1 или 0.
CH_PROG_TEXT - название текущей передачи
CH_PROG_START - время начала передачи
CH_PROG_END - время окончания передачи
CH_PROG_DESC - описание передачи. Отсутствует, если описание недоступно.
RANK_WEIGHT - вес результата.

[settings] Текущие настройки

Описание метода

Получение списка текущих настроек клиента

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/settings?token=<TOKEN_ID>

Формат полученных данных

XML
<response>
  <settings>
    <current>
      <server>
        <id><SERVER_ID></id>
        <name><SERVER_NAME></name>
        <load><SERVER_LOAD></load>
        <power><SERVER_POWER></power>
      </server>
      <timezone>
        <id><TZ_NAME></id>
        <gmt><TZ_GMT></gmt>
        <country_code><TZ_CC></country_code>
      </timezone>
      ...
    </current>
    <lists>
      <servers>
       <item>
         <id><SERVER_ID></id>
         <name><SERVER_NAME></name>
         <load><SERVER_LOAD></load>
         <power><SERVER_POWER></power>
       </item>
       ...
      </servers>
      <timezones>
        <item>
          <id><TZ_NAME></id>
          <gmt><TZ_GMT></gmt>
          <country_code><TZ_CC></country_code>
        </item>
        ...
      </timezones>
    </lists>
  </settings>
  <session>
    <token><TOKEN_ID></token>
    <expire><TOKEN_EXPIRE></expire>
    <now><SERVERTIME></now>
  </session>
</response>
JSON
{
  "settings": {
    "current": {
      "server": {
        "id": <SERVER_ID>,
        "name": <SERVER_NAME>,
        "load": <SERVER_LOAD>,
        "power": <SERVER_POWER>,
      },
      "timezone": {
        "id": <TZ_NAME>,
        "gmt": <TZ_GMT>,
        "country_code": <TZ_CC>
      }
      ...
    },
    "lists": {
      "servers": [
       {
         "id": <SERVER_ID>,
         "name": <SERVER_NAME>,
         "load": <SERVER_LOAD>,
         "power": <SERVER_POWER>,
       },
       ...
      ],
      "timezones": [
       {
         "id": <TZ_NAME>,
         "gmt": <TZ_GMT>,
         "country_code": <TZ_CC>
       },
       ...
      ]
    }
  },
  "session": {
    "token": <TOKEN_ID>,
    "expire": <TOKEN_EXPIRE>,
    "now": <SERVERTIME>
  }
}

Описание полученных данных

settings - содержит:

current - список текущих настроек пользователя
server - текущий сервер
SERVER_ID - ID сервера
SERVER_NAME - отображаемое имя сервера
SERVER_LOAD - нагрузка на сервер в процентах
SERVER_POWER - мощность сервера
timezone - текущий часовой пояс
TZ_NAME - имя временной зоны
TZ_GMT - смещение временной зоны относительно Гринвича
TZ_CC - двухбуквенный код страны для часового пояса
list - списки возможных доступных значений
servers - список доступных серверов
timezones - список доступных временных зон

[set] Изменение текущих настроек

Описание метода

Изменение текущих настроек клиента

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set?token=<TOKEN_ID>&timezone=<TZ_NAME>&server=<SERVER_ID>&new_code=<NEW_CODE>&old_code=<OLD_CODE>

Пример запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set?token=<TOKEN_ID>&timezone=Europe/Dublin&server=1&new_code=1111&old_code=0000

Возможные параметры:

timezone - имя временной зоны
server - ID сервера вещания
new_code - новый код доступа, должен содержать 4 цифры. Используется в паре с параметром old_code
old_code - текущий код доступа (код родительского контроля)

Формат полученных данных

XML
<response>
    <settings>
        <updated>1</updated>
        <current>
            <timezone>
                <id><TZ_NAME></id>
                <gmt><TZ_GMT></gmt>
                <country_code><TZ_CC></country_code>
            </timezone>
            <server>
                <id><SERVER_ID></id>
                <name><SERVER_NAME></name>
                <load><SERVER_LOAD></load>
                <power><SERVER_POWER></power>
            </server>
            <code>
                <updated>1|0</updated>
            </code>
        </current>
    </settings>
    <session>
        <token><TOKEN_ID></token>
        <expire><TOKEN_EXPIRE></expire>
        <now><SERVERTIME></now>
    </session>
</response>
JSON
{
    "settings": {
        "updated": 1|0,
        "current": {
            "timezone": {
                "id": <TZ_NAME>,
                "gmt": <TZ_GMT>,
                "country_code": <TZ_CC>
            },
            "server": {
                "id": <SERVER_ID>,
                "name": <SERVER_NAME>
                "load": <SERVER_LOAD>
                "power": <SERVER_POWER>
            },
            "code": {
                "updated": 1|0
            }
        }
    },
   "session": {
        "token": <TOKEN_ID>,
        "expire": <TOKEN_EXPIRE>,
        "now": <SERVERTIME>
    }
}

Описание полученных данных

settings - содержит:

updated- 1 в случае успеха изменения настроек или 0
current - список измененных настроек пользователя
server - текущий сервер
SERVER_ID - ID сервера
SERVER_NAME - отображаемое имя сервера
SERVER_LOAD - нагрузка на сервер в процентах
SERVER_POWER - мощность сервера в условных единицах
timezone - текущий часовой пояс
TZ_NAME - имя временной зоны
TZ_GMT - смещение временной зоны относительно Гринвича
TZ_CC - двухбуквенный код страны для часового пояса
code - код безопасности
updated - 1 в случае успеха или 0

[favorites] Избранное

Описание метода

Возвращает массив доступных для клиента ID избранных каналов.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/favorites?token=<TOKEN_ID>

Формат полученных данных

XML
<response>
	<favorites>
		<item><CH_ID></item>
		<item><CH_ID></item>
		...
		<item><CH_ID></item>
	</favorites>
	<session>
		<token><TOKEN_ID></token>
		<expire><TOKEN_EXPIRE></expire>
		<now><SERVERTIME></now>
	</session>
</response>
JSON
{
    "favorites": [
        <CH_ID>,
        <CH_ID>,
        ...
        <CH_ID>
    ],
    "session": {
        "token": <TOKEN_ID>,
        "expire": <TOKEN_EXPIRE>,
        "now": <SERVERTIME>
    }
}

Описание полученных данных

favorites - содержит:

CH_ID - ID канала



[set_favorites] Работа со списком избранного

Описание метода

Возвращает массив доступных для клиента ID избранных каналов.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set_favorites?token=<TOKEN_ID>&cid=<CH_ID>&pos=<CH_FAV_POS>&show_current

или

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set_favorites?token=<TOKEN_ID>&set=<CH_ID>,<CH_ID>,...<CH_ID>&show_current
Обязательные параметры:
cid - ID канала.
Необязательные параметры:
set - список ID каналов через запятую для установки нового списка избранного из указаных каналов в указанном порядке или 0 для полной очистки списка избранного.
pos - позиция канала в списке избранного. Отсчет начинается от 1. Если параметр не указан или равен 0, то cid удаляется из списка избранного клиента. Может принимать следующие значения:
[0-9]+ - позиция в которую нужно переместить\вставить канал в списке;
0 или del - удалить канал из списка;
first - переместить\вставить канал в начало списка;
last - переместить\вставить канал в конец списка;
show_current - показать список избранного после изменений

Примечание: set и cid (+pos) являются взаимоисключающими параметрами. Если указан set, то параметры cid и pos будут проигнорированы

Формат полученных данных

XML
<response>
	<favorites>
		<updated>1|0</updated>
		<current>
			<item><CH_ID></item>
			<item><CH_ID></item>
			...
			<item><CH_ID></item>
		</current>
	</favorites>
	<session>
		<token><TOKEN_ID></token>
		<expire><TOKEN_EXPIRE></expire>
		<now><SERVERTIME></now>
	</session>
</response>
JSON
{
	"favorites": {
		"updated": 1|0,
		"current": [
			<CH_ID>,
			<CH_ID>,
			...
			<CH_ID>
		]
	},
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}

Описание полученных данных

favorites - содержит:

CH_ID - ID канала

[news] Новости сервиса

Описание метода

Возвращает последние 10 новостей сервиса.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/news?token=<TOKEN_ID>&type=plain
Необязательные параметры:
type - тип отображения содержимого. По умолчанию возвращает контент в виде html. Доступные значения: plain - отображение контента в виде текста.
id - NEWS_ID (ID новости). Отображение одной новости с указанным ID.

Формат полученных данных

XML
<response>
	<news>
		<item>
			<id><NEWS_ID></id>
			<date><NEWS_DATE></date>
			<title><NEWS_TITLE></title>
			<text><NEWS_TEXT></text>
		</item>
		...
	</news>
	<session>
		<token><TOKEN_ID></token>
		<expire><TOKEN_EXPIRE></expire>
		<now><SERVERTIME></now>
	</session>
</response>
JSON
{
	"news": [
		{
			"id": <NEWS_ID>,
			"date": <NEWS_DATE>,
			"title": <NEWS_TITLE>,
			"text": <NEWS_TEXT>
		},
		...
	],
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}
NEWS_ID - уникальный ID новости
NEWS_DATE - дата создания новости
NEWS_TITLE - название новости
NEWS_TEXT - текст новости

[error_codes] Коды ошибок

Описание метода

Возвращает все доступные коды ошибок. Авторизация и token не требуются.

Формат запроса

http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/error_codes

Формат полученных данных

XML
<response>
	<error_codes>
		<item>
			<code><ERROR_CODE_ID></code>
			<msg><ERROR_CODE_MSG></msg>
		</item>
		...
	</error_codes>
	<session>
		<token><TOKEN_ID></token>
		<expire><TOKEN_EXPIRE></expire>
		<now><SERVERTIME></now>
	</session>
</response>
JSON
{
	"error_codes": [
		{
			"code": <ERROR_CODE_ID>,
			"msg": <ERROR_CODE_MSG>
		},
		...
	],
	"session": {
		"token": <TOKEN_ID>,
		"expire": <TOKEN_EXPIRE>,
		"now": <SERVERTIME>
	}
}
ERROR_CODE_ID - уникальный номер ошибки
ERROR_CODE_MSG - текст ошибки