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 }