Перейти к содержанию

API для управления сервисом network-DVR

Описание

Данный API предоставляет интерфейс для управления network-DVR (временная запись потока на принимающем оборудовании).

На данном этапе API позволяет получать информацию о DVR ranges (записанных периодах в DVR архиве) для потока и удалять их.

Интерфейс API

Общие сведения

  • Обязательные заголовки: CDN-AUTH-TOKEN (авторизационный токен, см. Авторизация)
  • Данные в теле запросов посылаются в JSON формате (Content-Type: application/json)

В случае корректного ответа API возвращается 2xx код ответа и текст ответа следующего формата:

{
  "status": "Completed",
  "data": <ответ от API>,
  "<параметр запроса 1>": "value1",
  "<параметр запроса 2>": "value2"
}

В случае ошибочного ответа API возвращает соответствующий код ответа и текст ответа следующего формата:

{
  "status": "Forbidden",
  "description": "Token is expired"
}

В поле description возвращается текстовое описание ошибки.

Получить информацию по конкретному потоку

URL: https://api.cdnvideo.ru/app/dvr-net/v1/<your_account_name>/streams/<stream_name>

  • Тип запроса: GET
  • Заголовки: CDN-AUTH-TOKEN
  • Параметры запроса: отсутствуют
  • Тип данных ответа: JSON Object
  • Параметры ответа:
Параметр Описание
stream_name Имя потока
host Сервер
is_alive Активен ли поток
dvr Блок с параметрами DVR для потока
dvr.enabled Включен ли DVR для потока
dvr.window Глубина DVR
dvr.duration Общая продолжительность записанного DVR без учета перерывов в записи
dvr.from Временная метка UTC первой записи DVR
dvr.ranges Список записанных периодов DVR
dvr.ranges.duration Продолжительность периода DVR
dvr.ranges.from Временная метка UTC начала периода DVR

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

curl -H "CDN-AUTH-TOKEN: $TOKEN" 'https://api.cdnvideo.ru/app/dvr-net/v1/testaccount/streams/test/stream1'

Пример ответа

{
  "status": "Completed",
  "stream_name": "test/stream1",
  "data": [
    {
      "stream_name": "test/stream1",
     "host": "ffce3977afe64227676096887231adba",
      "is_alive": false,
      "dvr": {
        "enabled": true,
        "window": 3600,
        "duration": 60,
        "from": 1668753181,
        "ranges": [
          {
            "duration": 27,
            "from": 1668753181
          },
          {
            "duration": 33,
            "from": 1668753302
          }
        ]
      }
    },
    {
      "stream_name": "test/stream1",
      "host": "7bd5e6ccea2e689d252eb4c183a1aaf6",
      "is_alive": false,
      "dvr": {
        "enabled": true,
        "window": 3600,
        "duration": 60,
        "from": 1668753181,
        "ranges": [
          {
            "duration": 27,
            "from": 1668753181
          },
          {
            "duration": 33,
            "from": 1668753302
          }
        ]
      }
    }
  ]
}

Удалить DVR range по конкретному потоку

Удалять можно любую часть DVR с точностью до секунды, то есть можно удалить кусок DVR в середине DVR range, слева, справа (причем левые и правые границы могут быть указаны вне существующих range).

Активный DVR удалять тоже можно, в этом случае список сначала становится пустым, а потом накапливается снова.

Если удаление не отработало хотя бы на одном из списка узлов, то возвращается 500 ошибка. В этом случае в ответе, помимо поля status, появляется поле failed_hosts со списком узлов, на которых удаление не отработало.

URL: https://api.cdnvideo.ru/app/dvr-net/v1/<your_account_name>/streams/<stream_name>

  • Тип запроса: DELETE
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object
  • Параметры запроса:
Параметр Описание
duration_sec Продолжительность удаляемого куска DVR
host Сервер
from_ts Временная метка UTC, с которой необходимо удалить кусок DVR
to_ts Временная метка UTC, до которой необходимо удалить кусок DVR

Обязательным является host, from_ts и любой из (duration_sec, to_ts).

Если необходимо сбросить DVR на всех узлах, то необходимо указать “звездочку” в качестве значения параметра host.

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

curl -X DELETE -d '{"host": "7bd5e6ccea2e689d252eb4c183a1aaf6", "from_ts": 1668753181, "duration_sec": 15}' -H "cdn-auth-token: $TOKEN" -H "Content-Type: application/json" 'https://api.cdnvideo.ru/app/dvr-net/v1/testaccount/streams/test/stream1'

Пример ответа

{
  "status": "Completed",
  "stream_name": "test/stream1",
  "duration_sec": 15,
  "from_ts": 1668753181,
  "host": "7bd5e6ccea2e689d252eb4c183a1aaf6"
}

Удалить весь накопленный DVR по конкретному потоку

Если удаление не отработало хотя бы на одном из списка узлов, то возвращаем 500 ошибку. В этом случае в ответе помимо поля status появляется поле failed_hosts со списком узлов, на которых удаление не отработало.

URL: https://api.cdnvideo.ru/app/dvr-net/v1/<your_account_name>/streams/<stream_name>

  • Тип запроса: DELETE
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object
  • Параметры запроса:
Параметр Описание
all Признак удаления всего накопленного DVR
host Сервер

Обязательными являются оба параметра.

Если необходимо сбросить DVR на всех узлах, то необходимо указать "звездочку" в качестве значения параметра host.

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

curl -X DELETE -d '{"host": "*", "all": true}' -H "cdn-auth-token: $TOKEN" -H "Content-Type: application/json" 'https://api.cdnvideo.ru/app/dvr-net/v1/testaccount/streams/test/stream1'

Пример ответа

{
  "status": "Completed",
  "stream_name": "test/stream1",
  "host": "*",
  "all": true
}