Skip to content
This repository has been archived by the owner on Feb 9, 2021. It is now read-only.

REST API v1

azhurb edited this page Jul 3, 2012 · 12 revisions

Актуальная версия доступна на официальной wiki

Запрос

Структура запроса HTTP_METHOD /RESOURCE/[IDENTIFIERS]

HTTP_METHOD

Поддерживаются следующие HTTP методы

GET    - получение данных
PUT    - обновление
POST   - создание
DELETE - удаление

IDENTIFIERS - Идентификаторы

Один или несколько. Идентификаторы разделяются запятой "," без пробелов.

Ответ

Структура ответа

{
    "status" : "OK" || "ERROR",
    "results" : [],
    "error" : "" // Поле содержит строку сообщения об ошибке.
}

Аутентификация и авторизация

Поддерживается basic HTTP authentication. При включенной аутентификации все запросы к API должны содержать корректный заголовок Authorization. При отсутствии этого заголовка или если в нем содержатся некорректные данные - ответ сервера будет содержать HTTP статус 401 Unauthorized и сообщение:

< {"status":"ERROR","results":"","error":"401 Unauthorized request"}

Для успешной аутентификации достаточно добавить в каждый запрос к API заголовок:

Authorization: Basic <base64encode("login":"password")>

Поддерживаемые ресурсы

STB

Управление приставками (рекомендуется использовать ресурс ACCOUNTS вместо STB)

Идентификатор: лицевой счет, MAC адрес (один ЛС может содержать больше одной приставки)

Поддерживаемые методы: GET, PUT, DELETE, POST

Разрешенные поля для обновления: status, additional_services_on, ls
Разрешенные поля для добавления: mac, login, password, status, additional_services_on, ls

Описание полей

mac - MAC адрес приставки
ls - лицевой счет
status - административный статус (1 - включена, 0 - выключена)
additional_services_on - статус подключения дополнительных услуг, таких как Видеоклуб, Караоке и т.д. (1 - включена, 0 - выключена)

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

> GET [API_URL]/stb
< {"status":"OK","results":[{"mac":"00:1A:79:00:15:B3","status":0,"additional_services_on":"0","ls":1553},{"mac":"00:1A:79:00:39:5E","status":0,"additional_services_on":"1","ls":3}]

Пример 2. Получение данных об одной приставке по идентификатору

> GET [API_URL]/stb/1553
< {"status":"OK","results":[{"mac":"00:1A:79:00:39:5E","status":1,"additional_services_on":"1","ls":1553}]}

Пример 3. Получение данных о нескольких приставках по идентификаторам

> GET [API_URL]/stb/1553,3
< {"status":"OK","results":[{"mac":"00:1A:79:00:39:5E","status":1,"additional_services_on":"1","ls":1553},{"mac":"00:1A:79:00:21:40","status":0,"additional_services_on":"0","ls":3}]}

Пример 4. Обновление данных приставки по идентификатору

> PUT [API_URL]/stb/1553
> status=1&additional_services_on=0
< {"status":"OK","results":[{"mac":"00:1A:79:00:39:5E","status":1,"additional_services_on":"0","ls":1553}]}

Пример 5. Удаление приставки по идентификатору

> DELETE [API_URL]/stb/1553
< {"status":"OK","results":true}

Пример 6. Добавление приставки по с логином и паролем (для аутентификации)

> POST [API_URL]/stb/
> login=test&password=1234
< {"status":"OK","results":{"mac":"","status":1,"additional_services_on":"1","ls":"0","login":"test"}}

Пример 7. Добавление приставки с выключенными дополнительными сервисами

> POST [API_URL]/stb/
> mac=00:1A:79:00:39:5E&additional_services_on=0
< {"status":"OK","results":{"mac":"00:1A:79:00:39:5E","status":1,"additional_services_on":"0","ls":"0","login":""}

ACCOUNTS

Управление учетными записями пользователей (вместо ресурса STB)

Идентификатор: лицевой счет, MAC адрес (один ЛС может содержать больше одной приставки)

Поддерживаемые методы: GET, PUT, DELETE, POST

Разрешенные поля для обновления: password, full_name, account_number, tariff_plan, status, stb_mac Разрешенные поля для добавления: login, password, full_name, account_number, tariff_plan, status, stb_mac Обязательные поля: login

Описание полей

login - Логин для авторизации. Уникален. (обязателен)
password - Пароль для авторизации
full_name - Наименование пользователя (ФИО или название организации)
account_number - Номер лицевого счета
tariff_plan - Идентификатор тарифного плана
status - административный статус (1 - включена, 0 - выключена)
stb_mac - MAC адрес приставки
stb_sn - Серийный номер устройства
stb_type - Модель устройства
subscribed - Список идентификаторов опциональных пакетов, на которые есть подписка

Пример 1. Получение данных о пользователе

> GET [API_URL]/accounts/00:1A:79:00:39:5E
< {"status":"OK","results":[{"login":"3210","full_name":"Test","account_number":"123","tariff_plan":"FULL","stb_sn":"123345","stb_mac":"FF:FF:FF:FF:FF:FF","stb_type":"MAG250","status":1,"subscribed":[]}]

Пример 2. Создание учетной записи пользователя

> POST [API_URL]/accounts/
> login=3210&password=1234&full_name=Test&account_number=123&tariff_plan=FULL&status=1
< {"status":"OK","results":true}

Пример 3. Обновление учетной записи пользователя

> PUT [API_URL]/accounts/00:1A:79:00:39:5E
> tariff_plan=STANDART
< {"status":"OK","results":true}

Пример 4. Удаление учетной записи пользователя

> DELETE [API_URL]/accounts/00:1A:79:00:39:5E
< {"status":"OK","results":true}

STB_MSG

Отправка сообщений на приставку

Идентификатор: лицевой счет, MAC адрес (один ЛС может содержать больше одной приставки)

Поддерживаемые методы: POST

Разрешенные поля для обновления: msg (текст сообщения должен быть url encoded)

При успешном добавлении в results возвращается true.

Пример 1. Обновление данных приставки по идентификатору

> POST [API_URL]/stb_msg/1553
> msg=%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0%20%D1%81%D0%B2%D1%8F%D0%B7%D0%B8
< {"status":"OK","results":true]}

STB_MODULES

Управление доступом к модулям (разделам главного меню)

Идентификатор: лицевой счет, MAC адрес (один ЛС может содержать больше одной приставки)

Поддерживаемые методы: PUT, GET

Разрешенные поля для обновления: disabled (разделы не отображаются, требуется перезагрузка), restricted (ограничивается доступ)

Пример 1. Запрет доступа в разделы vclub karaoke, отключение модуля radio

> POST [API_URL]/stb_modules/00:1A:79:00:39:5E
> restricted[]=vclub&restricted[]=karaoke&disabled[]=radio
< {"status":"OK","results":{"disabled":["radio"],"restricted":["vclub","karaoke"]}}

Пример 2. Отключение всех ограничений

> POST [API_URL]/stb_modules/00:1A:79:00:39:5E
> restricted[]=&disabled[]=
< {"status":"OK","results":{"disabled":[""],"restricted":[""]}}

ITV

Получение списка каналов

Идентификатор: ID канала

Поддерживаемые методы: GET

Описание полей

id - ID канала
name - имя канала
number - номер канала
base_ch - идентификатор базового канала

Пример 1. Получение данных о всех каналах

> GET [API_URL]/itv
< {"status":"OK","results":[{"id":"37","name":"\u041c-TV \u0423\u043a\u0440\u0430\u0438\u043d\u0430","number":"64"}, ...]

ITV_SUBSCRIPTION

Управление подпиской на каналы

Идентификатор: лицевой счет, MAC адрес (один ЛС может содержать больше одной приставки)

Поддерживаемые методы: GET, PUT

Разрешенные поля для обновления: sub_ch

Описание полей

ls  - лицевой счет
mac - MAC адрес приставки
sub_ch - список ID каналов
additional_services_on - статус подключения дополнительных услуг

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

> GET [API_URL]/itv_subscription
< {"status":"OK","results":[{"mac":"00:1A:79:00:39:5E","sub_ch":["27"],"ls":1553,"additional_services_on":"0"}, {"mac":"00:1A:79:00:15:B3","sub_ch":["27", "29"],"ls":3,"additional_services_on":"0"}]}

Пример 2. Получение данных о подписке для конкретного лицевого счета

> GET [API_URL]/itv_subscription/1553
< {"status":"OK","results":[{"mac":"00:1A:79:00:39:5E","sub_ch":["27"],"ls":1553,"additional_services_on":"0"},{"sub_ch":["58"],"mac":"00:1A:79:00:15:B3","ls":"1553","additional_services_on":"0"}]}

Пример 3. Получение данных о подписке для конкретной приставки

> GET [API_URL]/itv_subscription/00:1A:79:00:39:5E
< {"status":"OK","results":[{"mac":"00:1A:79:00:39:5E","sub_ch":["27"],"ls":1553,"additional_services_on":"0"}]}

Пример 4. Обновление данных о подписке для всех приставок на лицевом счете

> PUT [API_URL]/itv_subscription/1553
> sub_ch[]=27&sub_ch[]=29&additional_services_on=1
< {"status":"OK","results":[{"sub_ch":["27","29"],"mac":"00:1A:79:00:15:B3","ls":"1553","additional_services_on":"1"},{"sub_ch":["27","29"],"mac":"00:1A:79:00:39:5E","ls":"1553","additional_services_on":"1"}]}