Archive API
Archive API — отдельное API для работы с архивом конкретной камеры. Реквизиты для доступа к нему возвращаются методом GET /v1/cameras/{cameraId} в полях archiveApiUrl и archiveApiToken.
Авторизация
Заголовок раздела «Авторизация»Archive API не использует X-Integration-Key. Вместо этого к URL каждого запроса добавляются query-параметры signature и exp из archiveApiToken.
Шаблон URL:
{archiveApiUrl}?signature={archiveApiToken.signature}&exp={archiveApiToken.exp}Пример:
https://faceter-archive-api-server/archives/{archiveId}/preview?signature=3a1a3cfc&exp=1761376683Параметры временного диапазона
Заголовок раздела «Параметры временного диапазона»Методы timeline, index.m3u8 и size принимают одинаковые параметры:
| Параметр | Тип | Описание |
|---|---|---|
| start | number(double) | начало интервала |
| duration | number(double) | длительность интервала |
Метод preview использует параметр time — конкретный момент времени.
Таймлайн архива
Заголовок раздела «Таймлайн архива»Возвращает информацию о наличии архивных записей на указанном временном промежутке.
GET /archives/{archiveId}/timeline| Параметр | Тип | Описание |
|---|---|---|
| archiveId | uuid | идентификатор архива |
| start | number(double) | начало интервала |
| duration | number(double) | длительность интервала |
Response 200:
[ { "time": 1712745600000, "duration": 60000, "offset": 0 }]| Поле | Тип | Описание |
|---|---|---|
| time | int64 | время начала интервала |
| duration | int64 | длительность интервала |
| offset | int64 | смещение |
HLS-плейлист архива
Заголовок раздела «HLS-плейлист архива»Возвращает M3U8-плейлист для воспроизведения архива HLS-плеером.
GET /archives/{archiveId}/index.m3u8| Параметр | Тип | Описание |
|---|---|---|
| archiveId | uuid | идентификатор архива |
| start | number(double) | начало интервала |
| duration | number(double) | длительность интервала |
| discontinuity | boolean | добавлять EXT-X-DISCONTINUITY при разрывах |
Response 200 — текстовый M3U8 файл (application/vnd.apple.mpegurl):
#EXTM3U#EXT-X-VERSION:3#EXTINF:6.000,segment1.ts#EXTINF:6.000,segment2.tsResponse 404:
{ "status": 404, "code": "PlaylistNotFound", "description": "Archive playlist was not found" }Размер архива
Заголовок раздела «Размер архива»Возвращает размер архива в байтах за указанный период.
GET /archives/{archiveId}/size| Параметр | Тип | Описание |
|---|---|---|
| archiveId | uuid | идентификатор архива |
| start | number(double) | начало интервала |
| duration | number(double) | длительность интервала |
Response 200:
{ "size": 10485760 }| Поле | Тип | Описание |
|---|---|---|
| size | int64 | размер в байтах |
Preview архива
Заголовок раздела «Preview архива»Возвращает JPEG-изображение из архива для указанного момента времени.
GET /archives/{archiveId}/preview| Параметр | Тип | Описание |
|---|---|---|
| archiveId | string | идентификатор архива |
| time | number(double) | момент времени |
Response 200 — JPEG-изображение (image/jpeg).
Response 404 — ProblemDetails:
{ "type": "about:blank", "title": "Not Found", "status": 404, "detail": "Preview not found", "instance": "/archives/{archiveId}/preview"}