Stat API

Stat API служит для предоставления провайдерам статистики взаимодействия абонентов с TMS в формате JSON.

В рамках Stat API доступно три эндпоинта для выполнения GET-запроса:

  • /api/stats/subscription - получение статистки по подпискам.

  • /api/stats/device - получение статистики по устройствам.

  • /api/stats/account - получение статистики по аккаунту.

Обязательными параметрами запросов для каждого эндпоинта являются начальная и конечная даты временного диапазона в формате yyyy-mm-dd (год-месяц-день) для которого запрашивается статистика. Если в системе зарегистрировано более одного провайдера, можно запросить выдачу статистики только для одного из них с помощью параметра provider_id. Если этот параметр не включён в запрос, то API вернёт запрашиваемую статистику для всех провайдеров, зарегистрированных в TMS.

В ответ на запрос статистки по любому из эндпоинтов система возвращает JSON-объект в котором обозначены начальная и конечная даты временного диапазона, для которого запрашивается статистика, а также массив provider_stat, содержащий объект запрашиваемой статистики для интересующего провайдера (или по одному такому объекту для каждого провайдера, зарегистрированного в системе, если их более одного и в запросе не указан параметр provider_id).

При использовании API ваша система должна проходить простую basic авторизацию, используя логин и пароль администратора. Cоветуем создать для этих целей отдельного администратора в TMS.

Для практической оценки возможностей сбора статистики, тестирования запросов и подробного ознакомления со Stat API в TMS предусмотрен Swagger UI, доступный по адресу https://<tms_server>/api/stats/swagger-ui/index.html

Статистика подписок

Пример запроса к Stats API для получения статистики по подпискам для провайдера c двумя активными тарифами и c provider_id = 1 в период со второго по четвертое июня 2025 года:

GET https://<tms_server>/api/stats/subscription?from=2025-06-02&to=2025-06-04&provider_id=1

Полученный от TMS ответ на него:

{
  "from": "2025-06-02",
  "to": "2025-06-04",
  "provider_stat": [
    {
      "provider_id": 1,
      "subscriptions_stat": [
        {
          "date": "2025-06-02",
          "subscriptions": [
            {
              "tariff_id": 1,
              "name": "Example_tariff_1",
              "enabled_count": 150,
              "enabled_device_count": 200,
              "active_count": 126,
              "disabled_count": 21,
              "enabled_account_with_devices": 150
            }
            {
              "tariff_id": 2,
              "name": "Example_tariff_2",
              "enabled_count": 100,
              "enabled_device_count": 121,
              "active_count": 74,
              "disabled_count": 3,
              "enabled_account_with_devices": 100
            }
          ]
        },
        {
          "date": "2025-06-03",
          "subscriptions": [
            {
              "tariff_id": 1,
              "name": "Example_tariff_1",
              "enabled_count": 160,
              "enabled_device_count": 211,
              "active_count": 150,
              "disabled_count": 21,
              "enabled_account_with_devices": 160
            },
            {
              "tariff_id": 2,
              "name": "Example_tariff_2",
              "enabled_count": 99,
              "enabled_device_count": 3,
              "active_count": 72,
              "disabled_count": 4,
              "enabled_account_with_devices": 99
            }
          ]
        }
      ]
    }
  ]
}

Элементы массива subscribtion_stat содержат в себе статистику по всем тарифам провайдера за соотвествующие даты в виде массивов subscriptions, объекты в которых имеют следующие поля:

tariff_id:

Идентификаитор тарифа.

name:

Наименование тарифа.

enabled_count:

Количество включенных абонентов с подпиской на этот тариф по состоянию на конец дня.

enabled_device_count:

Количество устройств, зарегистрированных у включенных аккаунтов по состоянию на конец дня.

active_count:

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

disabled_count:

Количество отключенных аккаунтов с подпиской на этот тариф по состоянию на конец дня.

enabled_account_with_devices:

Количество включенных аккаунтов с подпиской на этот тариф, к которым привязано как минимум к одно устройство по состоянию на конец дня.

Статистика устройств

Пример запроса к Stats API для получения статистики по устройствам для провайдера c provider_id = 1 в период со второго по четвертое июня 2025 года:

GET https://<tms_server>/api/stats/device?from=2025-06-02&to=2025-06-04&provider_id=1

Полученный от TMS ответ на него:

{
  "from": "2025-06-02",
  "to": "2025-06-04",
  "provider_stat": [
    {
      "provider_id": 1,
      "device_stat": [
        {
          "class": "phone",
          "live_hours": 4,
          "dvr_hours": 1,
          "live_minutes": 243,
          "dvr_minutes": 61,
          "unique_devices": 4
        },
        {
          "class": "stb",
          "live_hours": 153,
          "dvr_hours": 15,
          "live_minutes": 9180,
          "dvr_minutes": 903,
          "unique_devices": 170
        },
        {
          "class": "tv",
          "live_hours": 120,
          "dvr_hours": 30,
          "live_minutes": 7200,
          "dvr_minutes": 1800,
          "unique_devices": 102
        },
        {
          "class": "web",
          "live_hours": 3,
          "dvr_hours": 0,
          "live_minutes": 181,
          "dvr_minutes": 0,
          "unique_devices": 2
        }
      ]
    }
  ]
}

Элементы массива device_stat содержат статистику по использованию устройств конкретного класса в виде объектов, имеющих следующие поля:

class:

Класс устройства. На данный момент сбор обособленной статистики возможен для классов tv (приложения для Smart TV), phone (мобильные телефоны), stb (медиацентры), tablet (планшеты), web (веб-плеер TMS). Учёт статистики для конкретного класса устройств наинается со дня первого подключения устройства этого класса к TMS.

live_hours:

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

dvr_hours:

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

Предупреждение

Поля live_hours и dvr_hours считаются устаревшими. При работе со Stat API следует использовать минутные поля, представленные ниже.

live_minutes:

Время в минутах, проведённое абонентами за просмотром трансляции телевидения с использованием устройств данного класса за запрошенный промежуток времени.

dvr_minutes:

Время в минутах, проведённое абонентами за просмотром архива DVR с использованием устройств данного класса за запрошенный промежуток времени.

unique_devices:

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

Статистика просмотра каналов абонентами

Пример запроса к Stats API для получения статистики просмотра каналов абонентами для провайдера c provider_id = 1 в период со второго по четвертое июня 2025 года:

GET https://<tms_server>/api/stats/account?from=2025-06-02&to=2025-06-04&provider_id=1

Полученный от TMS ответ на него:

{
  "from": "2025-06-02",
  "to": "2025-06-04",
  "provider_stat": [
    {
      "providerId": 1,
      "account_stat": [
        {
          "account_id": 9,
          "account_contract": "",
          "channels": [
            {
              "channel_id": 1,
              "live_hours": 4,
              "dvr_hours": 0,
              "live_minutes": 240,
              "dvr_minutes": 0
            },
            {
              "channel_id": 2,
              "live_hours": 0,
              "dvr_hours": 0,
              "live_minutes": 2,
              "dvr_minutes": 0
            }
          ]
        }
      ],
      "channels": [
        {
          "id": 1,
          "name": "News Channel",
          "favorites": [
            1
          ]
        },
        {
          "id": 2,
          "name": "HD Classics",
          "favorites": [
            2
          ]
        }
      ],
      "favorites": [
        {
          "id": 1,
          "name": "News"
        },
        {
          "id": 2,
          "name": "Movies"
        }
      ]
    }
  ]
}

Элементы массива account_stat содержат объекты статистики просмотра каналов конкретными абонентами. В ответе также представлены перечни каналов (массив channels) и их тематик (массив favorites). В сочетании со сведениями, предоствленными в персональных отчётах, эти данные позволяют гибко производить оценку популярности у абонентов определенных тематик или составлять рейтинги просмотров телеканалов.

В объектах массива account_stat предусмотрены следующие поля:

account_id:

Идентификатор абонента в системе.

account_contract:

Строка, содержащая данные о договоре с абонентом.

channels:

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

channel_id:

Идентификатор канала в системе.

live_hours:

Время в часах, проведённое данным абонентом за просмотром трансляции канала за запрошенный промежуток времени.

dvr_hours:

Время в часах, проведённое данным абонентом за просмотром архива DVR канала за запрошенный промежуток времени.

Предупреждение

Поля live_hours и dvr_hours считаются устаревшими. При работе со Stat API следует использовать минутные поля, представленные ниже.

live_minutes:

Время в минутах, проведённое данным абонентом за просмотром трансляции канала за запрошенный промежуток времени.

dvr_minutes:

Время в минутах, проведённое данным абонентом за просмотром архива DVR канала за запрошенный промежуток времени.

В объектах массива каналов (channels) предусмотрены следующие поля:

id:

Идентификатор канала в системе.

name:

Наименование канала.

favorites:

Массив идентификаторов тематик, соответствующих контентному наполнению данного канала.

В объектах массива тематик (favorites) предусмотрены следующие поля:

id:

Идентификатор тематики в системе.

name:

Наименование тематики.

Пример приложения для экспорта и анализа статистики

Пример экспортирования статистики на typescript https://github.com/tvip/tms-stat-viewer-example.

Также доступен веб интерфейс примера имплементации Stat API https://tvip.github.io/tms-stat-viewer-example.

Авторизоваться в веб интерфейсе можно используя адрес TMS, логин и пароль администратора.

../../_images/auth.png

Ниже приведены некоторые примеры отображения статистики.

В разделе Report options нужно выбрать Provider и период для отображения статистики.

../../_images/report_options.png

Пример отображения Channels Stat:

../../_images/channel_stats.png

Статистика Live и DVR просмотров:

../../_images/channel_rating.png

Пример отображения Device Stat:

../../_images/device_stat.png