+ getQueryResponse - вы можете запросить ответ на ранее отправленный к API запрос. При проблемах с сетью
вы можете не получить ответа от API, и не знать дошел ли ваш запрос до API и был ли он выполнен. Это актуально при запросе на покупку пакета.
Используемая кодировка для запросов/ответов: UTF-8.
Запросы можете отправлять чем угодно, любым юзер-агентом - мне насрать.
Использовать можно любой метод - GET || POST || их комбинацию, при наличии одинаковых GET/POST переменных в запросе - GET'овая переменная игнорится.
Ответ я отдаю в .json формате, ответ всегда содержит сл. 4 параметра:
status - статус ответа '0 || 1', и так понятно, что он означает
error - текст ошибки если 'status = 0', иначе - пусто
data - собственно запрашиваемые данные
query - параметры запроса - для контроля запросов и ответов при написании скриптов для работы с API
Если в запросе на какой-либо список дополнительно указать параметр 'keys' = '1', то вам вернется не простой нумерованный список,
а ассоциативный массив, где ключом будет ID записи из запрашиваемого списка.
Это удобно для быстрого доступа к необходимой строке. Например у вас есть ID канала = '27', вам не нужно пиздовать циклом по всему массиву каналов,
чтоб найти нужный, достаточно обратиться к массиву каналов по ключу $channels['id.27'].
Авторизация
Перед работой с API, необходимо авторизоваться [ открыть сессию для работы с API ] и получить ID вашей сессии [ sessionId ].
Далее все запросы к API будут выполняться с этим sessionId.
Для авторизации отправьте на API-url запрос содержащий только 2 параметра:
userPasswd - md5 от юзерского пароля [ маска: md5-строка ]
Пример ответа на авторизацию: {"status":1,"error":"","data":{"sessionId":"68244d31371ba846360a18ad49ddeecc"},"query":{"userLogin":"dmkov","userPasswd":"d8578edf8458ce06fbc5bb76a58xxxxx"}}
userRegistration
Регистрация пользователя.
Для регистрации пользователя отправьте на API-url запрос содержащий сл. параметры:
sessionId - В ДАННОМ ЗАПРОСЕ ЭТОТ ПАРАМЕТР НЕ НУЖЕН
userPasswd[01||02] - пароль юзера, можно задать одним параметром 'userPasswd' или парой параметров 'userPasswd01' && 'userPasswd02' ( апи тогда проверит их совпадение )
userEmail - мыло юзера
Пример запроса: https://tv.team/api/?sessionId=f3f71f6cded17a6d11d2162e624ea140&apiAction=userRegistration&userLogin=XXX&userPasswd01=XXX&userPasswd02=XXX&userEmail=XXX
Описание данных ответа
При успешной регистрации пользователя возвращается 'status' => 1 и данные нового пользователя в переменной 'newUserData'.
При ошибке возвращается 'status' => 0 и текст ошибки в переменной 'error'.
Ответ:
getUserData
Получение данных профиля.
Если в запросе присутствует переменная userId || userLogin - то это запрос на данные своего подпользователя.
Если в запросе отсутствует переменная userId && userLogin - то это запрос данных своего профиля.
Если указать и userId и userLogin - то поиск будет производиться по userId.
Для получения данных профиля отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getUserData'
userId - ID юзера, необязательная переменная [ маска: целое число ]
orderWay - направление сортировки [ 'asc' || 'desc' ]
Пример запроса: https://tv.team/api/?sessionId=0b95441af456c66a37f5086183f7193f&apiAction=getSubUsers&sWord=346y4b34
Описание данных ответа
updateUserData
Обновление данных профиля - своего иои подпользователя.
Для обновления данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'updateUserData'
userId - ID обновляемого пользователя [ маска: целое число ] - если не указан, то будет обновление своего профиля
userPasswd - новый пароль [ маска: /^[a-z0-9!@#$%^&*]{6,32}$/i ]
groupId - новая группа серверов к которой идет просмотр ip.tv [ маска: целое число ]
userEmail - новое мыло [ маска: "/^[\.\-_A-Za-z0-9]{1,128}?@[\.\-A-Za-z0-9]{1,128}?\.[A-Za-z0-9]{2,6}$/i" ]
pornoPinCode - пин-код на порнуху, используется в web-плэере, и наших приложениях [ маска: /^[0-9]{4}$/i ]
showPorno - выгружать порнуху в плэйлисты или нет [ маска: 0 || 1 ]
fsNumCon - количество доступных потоковых сессий ( vlc, ottPlayer, наш web-player, наши приложения, телики, mplayer, и тд ) [ маска: /^[0-9]{1,3}$/i ]
stNumCon - количество доступных приставочных сессий ( приставки типа MAG2XX, ... ) [ маска: /^[0-9]{1,3}$/i ]
macAddress - список mac-адресов приставок юзера, через зяпятую. Количество mac-адресов д.б. <= 'stNumCon'.
Если mac-адрес указан - то просмотр для прситавки сразу будет открыт. Если лезем смотреть приставкой, mac-адрес которой не указан,
то приставка попросит указать логин/пароль для доступа к порталу. [ маска: XX:XX:XX:XX:XX:XX,... ]
logInAbility - [ тока для подпользователей ] разрешение на вход в биллинг ( WEB и по API ) [ маска: 0 || 1 ]
parentComments - [ тока для подпользователей ] ваш комментарий к подпользователю [ маска: цифры, ru/eng-символы, :=_,.- ;!@#$%^&*<>?()\n\r, от 0 до 512 символов
Все параметры ( кроме sessionId & apiAction ) являются НЕобязательными. То есть для смены пароля можно отправить запрос только в параметром 'userPasswd'.
Пример запроса: https://tv.team/api/?sessionId=ba3091fd68x5a7c7f70e9ffd80e29690&apiAction=updateUserData&userId=3277&fsNumCon=1&stNumCon=5
Описание данных ответа
addSubUser
Добавление подпользователя.
Для добавления подпользователя отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'addSubUser'
userLogin - логин - обязательный параметр
userPasswd - пароль - обязательный параметр
userEmail - мыло - НЕ обязательный параметр - если не указано -> берется мыло дилера
groupId - группа серверов [ маска: целое число ] - НЕ обязательный параметр - если не указана -> берется дефолтная группа
logInAbility - может ли юзер входить в юзерку tv.team, прогу и тд - НЕ обязательный параметр - [ маска: 1 || 0 ]
Пример запроса: https://tv.team/api/?sessionId=10833c7a170962a36838b90dceb37772&apiAction=addSubUser&userLogin=apiUser02&userPasswd=qwerty
Описание данных ответа
changeUserToken
Смена токена, своего или у подПользователя.
Для смены токена отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'changeUserToken'
userId - ID подПользователя у которого меняется токен - НЕ обязательный параметр - если отсутствует, то сменится свой токен
Пример запроса: https://tv.team/api/?sessionId=3cd1f4d00df30dc4f54f07a1b9d05055&apiAction=changeUserToken&userId=1234567
Описание данных ответа
getBillingPackages
Получение списка пакетов биллинга.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getBillingPackages'
Пример запроса: https://tv.team/api/?sessionId=10833c7a170962a36838b90dceb37772&apiAction=getBillingPackages
Описание данных ответа:
packageId - ID пакета
packageName - название пакета
packagePrice - цена
sellStatus - продается в данный момент или нет ( не все пакеты могут продаваться, например акционные или тестовые )
packageIsBasic - базовый или нет [ маска: 1 || 0 ] если пакет является базовым - то его можно купить, если он не является базовым, например порнуха или кино, - то его можно купить только как дополнтельный к базовому
optionsAreDisabled - незя докупать опции [ маска: 1 || 0 ] если пакет является базовым - то к нему може быть запрещена покупка допов ( это нужно для пакета 'все каналы', чтоб люди 2 раза не платили за кино или порно или ... )
packageIsTimed - повременка или нет [ маска: 1 || 0 ] если это зачение = 1 - то именно этот пакет автоматически добавляется юзеру при переходе на повременку. параметры 'sellStatus' & 'packageIsBasic' & 'optionsAreDisabled' у повременного пакета не играют никако роли. купить повременной пакет не получится - он выдается тока через запрос на переход на повременку
channelsList - список каналов данного пакета
getUserPackages
Получение списка купленных пакетов.
Если в запросе присутствует переменная userId - то это запрос пакетов указанного подпользователя.
Если в запросе отсутствует переменная userId - то это запрос своих пакетов.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getUserPackages'
userId - ID юзера, необязательная переменная [ маска: целое число ]
isActive - возвратить работающие(1) на текущий момент пакеты или все(0) [ маска: 1 || 0 ]
Пример запроса: https://tv.team/api/?sessionId=232367ccdabdeaf4a6bc45ee97f0397e&apiAction=getUserPackages&isActive=1
Окончание пакета ( до 23:59:59 31.12.2050 ). Это повременной пакет, он не бесконечный - просто у него выставлена заведомо большая дата окончания.
"salePrice":"1.034868"
Цена пакета. Когда пользователь переключается на повременку - ему 'покупается' повременной пакет за 0.00 USD. Далее, с его баланса списывается
бабло за просмотренные сессии, это списанное бабло добавляется к цене этого повременного пакета. В данном конкретном случае - насмотрено по повременке
на 1.034868 USD.
"canceled":"0"
Отмененный пакет или нет. В нашем случае - повременка не может быть отменена, она может быть только остановлена.
"packageId":"1"
Номер пакета. По этому номеру, в запросе 'getBillingPackages', можно получить все данные о пакете ( название, цена ... )
"packageIsTimed":"1"
Данный купленный пакет повременной или нет. Этот параметр можно получить из данных пакета ( "packageId":"1" ), но я его тут продублировал, для удобства.
"options":{ }
Список опциональных пакетов. Пакеты у нас бывают 'БАЗОВЫЕ' ( которые можно купить ), и 'ОПЦИОНАЛЬНЫЕ' - которые можно купить только в дополнение
к базовому. ( например: опция 'Клубника' к пакету 'Стартовый' ). В нашем случае: у повременного пакета не бывает опций.
"totalPrice":"1.034868"
Полная цена пакета: сумма цен основного пакета и его опций. В нашем случае 'totalPrice' совпадает с 'salePrice'.
Цена базового пакета ( в нашем случае Стартовый ) на указанный в датах срок.
"canceled":"0"
Отмененный пакет или нет. У нас в запросе стоит параметр isActive=1, поэтому в результате не может быть пакетов с "canceled":"1". Если вы опустите
паматер isActive в запросе, то получите полный список всех пакетов пользователя, среди которых уже могут быть отмененые пакеты с "canceled":"1".
"packageId":"182"
Номер пакета. По этому номеру, в запросе 'getBillingPackages', можно получить все данные о пакете ( название, цена ... ). В нашем случае - это 'Стартовый'.
"packageIsTimed":"0"
Данный купленный пакет повременной или нет.
"options":[{}]
Список опциональных пакетов, у нас это 'Кино'&'СПОРТ'. По оции дается ее уникальный номер 'saleId', номер опционального пакета 'packageId',
даты опции ( они могут не совпадать с датами базового, так как могут быть докуплены позже, а не в момент покупки базового ), и цена опции.
"totalPrice":"12.9"
Полная цена пакета: сумма цен основного пакета и его опций.
addSale ( checkSale )
Покупка базового пакета с указанными опциями - себе или подПользователю.
Для покупки пакета отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'checkSale' ( проверка данных ) || 'addSale' ( покупка пакета ).
Проверка данных делается перед покупкой пакета ( но можете и не делать ), разница между запросами только в том,
что 'проверка' проверит и скажет, что они годные и в них нет ощибок, а 'покупка' выполнит все те же проверки - и если все 'ок' - то выполнит покупку.
userId - ID юзера, необязательная переменная [ маска: целое число ]. Если не указан номер юзера или он = 0, то это покупка пакета себе,
если номер указан - то это покупка на вашего подПользователя с этим номером.
packageId - ID покупаемого базового пакета [ маска: целое число ].
options - номера опциональных пакетов через запятую [ маска: цифры и запятые ].
datesAutoSet - автовыставление дат покупаемого пакета. Если параметр = 1, то АПИ сама выставит данные покупаемого пакета.
Если у юзера нет таких пакетов - то начало пакета будет 'сегодня' - а окончание через 'autoSetLen'*31 дней.
Если у юзера есть такой пакет - то даты пакета будут выставлены с даты окончания имеющегося пакета.
autoSetLen - длина пакета в месяцах которая будет автоматом выставлена в вышеописанном пункте, если параметр не выставлен - то он выставляется в '1' [ маска: целое число от 1 до 12 ].
fromDate & toDate - даты начала и окончания покупаемого пакета - если вы сами хотите выбрать нужные вам даты,
параметр 'datesAutoSet' в запросе должен быть выставлен в '0', иначе даты будут проигнорены.
даты не обязательны в запросе при условии, что 'datesAutoSet' = 1 [ формат дат: dd.mm.yyyy ]
queryId - уникальный номер вашего запроса на покупку, используется только с apiAction = 'addSale' [ маска: /^[0-9a-z]{1,32}$/i ].
По этому 'queryId', в api-запросе 'getQueryResponse' вы сможете получить инфу о результате выполнения покупки пакета.
Используется в случаях когда по причинческим технинам не получен ответ от api, и не известно куплен ли пакет.
Пример запроса: проверка данных перед покупкой себе 'Стартового + Порнуха'
Ответ:
Описание:
После успешной проверки данных вы получаете предлагаемые даты начала и окончания пакета, длину пакета в днях и цену.
Сдесь в запросе не указан параметр 'autoSetLen' - поэтому длина автоматом выставлена в 1 мес.
Данный запрос используется в биллинге когда вы открываете окно с покупкой пакета - там автоматом предлагаются вам даты и
сразу показывается цена.
Пример запроса: проверка данных перед покупкой себе 'Стартового + `непонятная опция`'
Ответ:
Описание: Ответ с ошибкой. В ответе присутствует код ошибки и ее описание.
Коды ошибок:
1 - не найден покупатель пакета, то есть Вы ( может случиться только когда вы авторизованы в АПИ и вас админ удалил в админке )
2 - не найден будущий владелец пакета ( вы указали несуществующего подЮзера которому покупаете пакет )
3 - включена повременка, остановите повременку и подождите до 24:00 пока не закончится повременной пакет
4 - подождите до 24:00 пока не закончится повременной пакет
5 - не найден покупаемый базовый пакет ( вы указали несущетвующий номер пакета, или он удален, или он не базовый )
6 - неверный формат даты начала пакета
7 - неверный формат даты окончания пакета
8 - неверная дата начала пакета ( например 32 марта 2017 г )
9 - неверная дата окончания пакета
10 - дата начала пакета не может быть позже его окончания
11 - начало пакета не может быть в прошлом
12 - не найден опционный пакет ( вы в списке опций указали несуществующие, или удаленные, или не опционные пакеты )
13 - указанные даты пересекаются с ранее купленным пакетом #XXX
14 - для покупки пакета не хватает $
### системные ошибки - могут случиться когда все плохо и что то в базе 'упало' ###############################
15 - не могу начать изолированную сессию для покупки пакета
16 - не могу вставить купленный пакет в базу
17 - не могу обновить баланс покупателя
18 - не могу добавить строку в лог пользователя
getServersGroups
Получение списка групп серверов.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getServersGroups'
Пример запроса: https://tv.team/api/?sessionId=0b95441af456c66a37f5086183f7193f&apiAction=getServersGroups
Описание данных ответа
getPaymentSystems
Получение списка платежных систем.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
apiAction - 'getPaymentSystems'
Пример запроса: https://tv.team/api/?apiAction=getPaymentSystems
Принимаются платежи по этой п.с. в данный момени или нет
"psCurrency":"RUR"
Валюта п.с.
"isHidden":"0"
Скрытая платежка или нет ( например PayPal ), скрытой платежкой могут платить только юзеры у которых 'payWithHiddenPs' = 1
"minPayAmount":"0"
Минимальная сумма платежа в указанной п.с.
getFundBalanceForm
Получение html-формы на пополнение баланса или на покупку указанного пакета.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getFundBalanceForm'
psId - id платежки из списка платежек
fundAmount || packageId - сумма пополнения в долларах или ID покупаемого пакета ( второй вариант используется для автопокупки пакета при регистрации,
хотя в принципе его можно использовать и после регистрации - давать юзеру сразу купить то что он хочет, а не пополнить - а потом тыкать и покупать )
options - список ID опционных пакетов которые покупаются с вышеуказанным packageId
Пример запроса на пополнение баланса: https://tv.team/api/?sessionId=477759a7a97851ec26f38frc9055d87h&apiAction=getFundBalanceForm&psId=1&fundAmount=1
Пополнение баланса и автопокупка пакета 'Стартовый + Порнуха': https://tv.team/api/?sessionId=477759a7a978516c26f38f9c90b5d877&apiAction=getFundBalanceForm&psId=1&packageId=182&options=61
Описание данных ответа: в ответ приходит HTML-форма для субмита и перехода на оплату, и ID формы - для то чтоб к ней обратиться через jquery и субмитнуть
getServerDateTime
Получение серверной даты и времени.
Для получения даты/времени на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getServerDateTime'
Пример запроса: https://tv.team/api/?sessionId=0b95441af456c66a37f5086183f7193f&apiAction=getServerDateTime
Описание данных ответа
getChannelGroups
Получение списка категорий каналов.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getChannelGroups'
Пример запроса: https://tv.team/api/?sessionId=3fd013c61774f4798d2d9c9a91d8de9d&apiAction=getChannelGroups
Описание данных ответа
getUserChannels
Получение списка каналов с превьюхами, текущими программами, ссылкками на поток.
В конец ссылки на поток надо добавить '?token=<token>', где <token> - берется в api-запросе 'getRandomTokens'.
Список каналов будет соответствовать содержимому купленных у юзера пакетов.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getUserChannels'
resultType - формат результата, просто список [ если параметр не указан ]- или дерево с разбивкой по группам каналов [ если параметр указан и равен 'tree' ]
Пример запроса: https://tv.team/api/?sessionId=8a1558b85f1189d8eda945b775ac5ebc&apiAction=getUserChannels&resultType=tree
Описание данных ответа
getTvProgram
Получение программы телепередач на указанный канал.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getTvProgram'
channelId - номер канала [ маска: целое число ]
Пример запроса: https://tv.team/api/?sessionId=3fd013c61774f4798d2d9c9a91d8de9d&apiAction=getTvProgram&channelId=7
Описание данных ответа
getFavouriteChannels
Получение списка любимых каналов юзера ( на основе 2х недельной статистики ).
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getFavouriteChannels'
Пример запроса: https://tv.team/api/?sessionId=3fd013c61774f4798d2d9c9a91d8de9d&apiAction=getFavouriteChannels
Описание данных ответа
pornoPinCodeValidation
Валидация пинкода на порнуху.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
Пример запроса: https://tv.team/api/?sessionId=afa22b9590aed2bec91723ef36dec043&apiAction=pornoPinCodeValidation&pornoPinCode=0000
Описание данных ответа
addToFavourites
Принудительное добавление канала в список любимых каналов. Добавляется в конец списка.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'addToFavourites'
channelId - ID канала который нада добавить [ маска: положительное целое число ]
Пример запроса: https://tv.team/api/?sessionId=afa22b9590aed2bec91723ef36dec043&apiAction=addToFavourites&channelId=47
Описание данных ответа
removeFromFavourites
Удаление канала из списка любимых каналов.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'removeFromFavourites'
channelId - ID канала который нада удалить [ маска: положительное целое число ]
Пример запроса: https://tv.team/api/?sessionId=8a1558b85f1189d8eda945b775ac5ebc&apiAction=removeFromFavourites&channelId=1
Описание данных ответа
removeAllFromFavourites
Полная очистка списка любимых каналов.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'removeAllFromFavourites'
Пример запроса:
Описание данных ответа
getRandomTokens
Запрос на генерацию токенов для просмотра видеоссылок - при кажном переключении программ/каналов - юзать новый токен.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]
apiAction - 'getRandomTokens'
cnt - количество запрашиваемых токенов ( 1-1000 ) [ маска: положительное целое число ]
Пример запроса: https://tv.team/api/?sessionId=8a1558b85f1189d8eda945b775ac5ebc&apiAction=getRandomTokens&cnt=11
Описание данных ответа
getQueryResponse
Получение ответа на ранее отправленный к API запрос. Данная точка входа была реальзована для проверки статуса запроса на покупку пакетов 'addSale'.
Вы запросе 'addSale' вы должны указать уникальный идентификатор вашего запроса 'queryId', и потом, в этой точке входа, у вас будет возможность
получить не полученный ответ по 'queryId' и узнать ... а был ли куплен пакет.
Для получения данных отправьте на API-url запрос содержащий сл. параметры:
sessionId - ID сессии полученный при авторизации [ маска: md5-строка ]