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://cdnapi.solarspace.pro/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://cdnapi.solarspace.pro/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://cdnapi.solarspace.pro/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://cdnapi.solarspace.pro/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://cdnapi.solarspace.pro/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://cdnapi.solarspace.pro/app/dvr-net/v1/testaccount/streams/test/stream1'
Пример ответа
{
"status": "Completed",
"stream_name": "test/stream1",
"host": "*",
"all": true
}