Перейти к содержимому

Методы Integration API

Проверяет валидность ключа интеграции.

POST /v1/integration-key/validate
ЗаголовокТипОбязательныйОписание
X-Integration-Keystringдаключ интеграции

Пример:

Окно терминала
curl -X POST \
"https://cloud.faceter.cam/integration-api/v1/integration-key/validate" \
-H "X-Integration-Key: YOUR_INTEGRATION_KEY"

Response 200:

{ "isValid": true }
ПолеТипОписание
isValidbooleanпризнак валидности ключа

GET /v1/cameras/{cameraId}
ПараметрТипОписание
cameraIduuidидентификатор камеры

Пример:

Окно терминала
curl -X GET \
"https://cloud.faceter.cam/integration-api/v1/cameras/3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "X-Integration-Key: YOUR_INTEGRATION_KEY"

Response 200:

{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"deviceId": "1fa85f64-5717-4562-b3fc-2c963f66afb1",
"title": "Entrance Camera",
"previewUrl": "https://example.com/preview.jpg",
"archiveApiToken": { "signature": "string", "exp": 1712745600 },
"archiveApiUrl": "https://archive.example.com",
"archiveDays": 30,
"liveRtspUrl": "rtsp://example.com/live",
"liveHlsUrl": "https://example.com/live.m3u8",
"isOnline": true,
"lastOnlineDate": "2026-04-10T09:00:00Z",
"cameraModel": "Model X",
"platform": "Embedded",
"serialNumber": "ABC123",
"firmwareVersion": "1.0.0",
"applicationVersion": "2.1.0",
"isOwner": true,
"isFullAccess": true,
"isArchiveGranted": true,
"isAudioGranted": true,
"tempAccessExpiryDate": "2026-04-20T09:00:00Z",
"location": {
"id": "loc-1",
"title": "Main Office",
"room": { "id": "room-1", "title": "Hall" }
}
}
ПолеТипОписание
iduuidидентификатор камеры
deviceIduuidидентификатор устройства
titlestringназвание камеры
previewUrlstringссылка на превью
archiveApiTokenobjectтокен для Archive API
archiveApiToken.signaturestringподпись токена
archiveApiToken.expint64срок действия в Unix time
archiveApiUrlstringбазовый URL Archive API
archiveDaysintegerглубина архива в днях
liveRtspUrlstringRTSP URL live-потока
liveHlsUrlstringHLS URL live-потока
isOnlinebooleanкамера онлайн
lastOnlineDatedatetimeдата последнего онлайна
cameraModelstringмодель камеры
platformstringEmbedded / ThirdParty / Mobile
serialNumberstringсерийный номер
firmwareVersionstringверсия прошивки
applicationVersionstringверсия приложения
isOwnerbooleanпользователь — владелец
isFullAccessbooleanполный доступ
isArchiveGrantedbooleanдоступ к архиву
isAudioGrantedbooleanдоступ к аудио
tempAccessExpiryDatedatetimeсрок временного доступа
location.idstringидентификатор локации
location.titlestringназвание локации
location.room.idstringидентификатор комнаты
location.room.titlestringназвание комнаты

Ошибки: 404 Not Found


GET /v1/cameras

Пример:

Окно терминала
curl -X GET \
"https://cloud.faceter.cam/integration-api/v1/cameras" \
-H "X-Integration-Key: YOUR_INTEGRATION_KEY"

Response 200 — массив объектов, каждый имеет ту же структуру, что и ответ метода GET /v1/cameras/{cameraId}.


GET /v1/cameras/{cameraId}/events

Path-параметры:

ПараметрТипОписание
cameraIduuidидентификатор камеры

Query-параметры:

ПараметрТипОписание
eventTypesarray[string]список типов событий
startDatedatetimeдата начала периода
endDatedatetimeдата окончания периода
mergeIntervalintegerинтервал объединения событий
limitintegerмаксимальное количество записей
sortOrderstringNone / Asc / Desc

Типы событий: Motion, Human, Vehicle, LineCrossing, Intrusion, PeopleCounting, LicensePlate, Pet, PersonalMobilityVehicle, Face, Custom

Пример:

Окно терминала
curl -G \
"https://cloud.faceter.cam/integration-api/v1/cameras/3fa85f64-5717-4562-b3fc-2c963f66afa6/events" \
-H "X-Integration-Key: YOUR_INTEGRATION_KEY" \
--data-urlencode "startDate=2026-04-01T00:00:00Z" \
--data-urlencode "endDate=2026-04-10T00:00:00Z" \
--data-urlencode "eventTypes=Motion" \
--data-urlencode "sortOrder=Desc" \
--data-urlencode "limit=100"

Response 200:

{
"items": [
{
"id": "7fa85f64-5717-4562-b3fc-2c963f66afa1",
"cameraId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"type": "Motion",
"startTime": "2026-04-10T08:00:00Z",
"endTime": "2026-04-10T08:01:00Z",
"previewUrl": "https://example.com/event-preview.jpg",
"mergedEventsCount": 2,
"attributes": [{ "confidence": "0.98" }]
}
],
"hasMore": false
}
ПолеТипОписание
itemsarrayсписок событий
hasMorebooleanесть ли ещё данные
iduuidидентификатор события
typestringтип события
startTimedatetimeвремя начала
endTimedatetimeвремя окончания
previewUrlstringссылка на превью
mergedEventsCountintegerколичество объединённых событий
attributesarrayдополнительные атрибуты

Ошибки: 400 Bad Request, 404 Not Found


POST /v1/cameras/{cameraId}/events

Request Body:

{
"eventId": "7fa85f64-5717-4562-b3fc-2c963f66afa1",
"startDate": "2026-04-10T08:00:00Z",
"endDate": "2026-04-10T08:01:00Z",
"eventType": "Motion",
"instant": false,
"grid": { "rows": 3, "cols": 3, "cells": [1, 0, 0, 1, 1, 0, 0, 0, 1] },
"attributes": { "confidence": "0.98" },
"snapshot": "base64-or-url",
"objectSnapshot": "base64-or-url"
}
ПолеТипОписание
eventIduuidидентификатор события
startDatedatetimeдата начала
endDatedatetime, nullableдата окончания
eventTypestringтип события
instantbooleanмгновенное событие
grid.rowsintegerколичество строк
grid.colsintegerколичество колонок
grid.cellsarray[int64]значения ячеек
attributesobjectдополнительные атрибуты
snapshotstringснимок события
objectSnapshotstringснимок объекта

Response 204 — тело ответа отсутствует.

Ошибки: 400 Bad Request, 404 Not Found


GET /v1/cameras/{cameraId}/recordings

Response 200:

[{ "startDate": "2026-04-10T08:00:00Z", "durationSeconds": 300 }]
ПолеТипОписание
startDatedatetimeначало записи
durationSecondsintegerдлительность в секундах

Ошибки: 404 Not Found


7. Получение фрагмента архива (синхронный)

Заголовок раздела «7. Получение фрагмента архива (синхронный)»
GET /v1/cameras/{cameraId}/archive/clip

Query-параметры:

ПараметрТипОписание
startDatedatetimeначало фрагмента
durationint64длительность в секундах

Пример:

Окно терминала
curl -G \
"https://cloud.faceter.cam/integration-api/v1/cameras/3fa85f64-5717-4562-b3fc-2c963f66afa6/archive/clip" \
-H "X-Integration-Key: YOUR_INTEGRATION_KEY" \
--data-urlencode "startDate=2026-04-10T08:00:00Z" \
--data-urlencode "duration=60" \
-o clip.mp4

Response 200 — бинарный файл видео.

Ошибки: 400 Bad Request, 404 Not Found


POST /v1/cameras/{cameraId}/archive/exports

Request Body:

{
"startDate": "2026-04-10T08:00:00Z",
"durationSeconds": 120,
"audioEnabled": true,
"callbackUrl": "https://example.com/webhook"
}
ПолеТипОписание
startDatedatetimeначало экспортируемого интервала
durationSecondsint32длительность в секундах
audioEnabledbooleanвключать аудио
callbackUrlstringURL для callback после завершения

Response 202:

{ "exportId": "9fa85f64-5717-4562-b3fc-2c963f66afa2", "status": "Queued" }

Ошибки: 400 Bad Request, 404 Not Found, 500 Server Error


GET /v1/cameras/{cameraId}/archive/exports/{exportId}

Response 200:

{
"exportId": "9fa85f64-5717-4562-b3fc-2c963f66afa2",
"status": "Completed",
"videoUrl": "https://example.com/archive.mp4",
"previewUrl": "https://example.com/archive-preview.jpg",
"errorMessage": null,
"createdAtUtc": "2026-04-10T08:00:00Z",
"completedAtUtc": "2026-04-10T08:02:00Z"
}
ПолеТипОписание
exportIduuidидентификатор экспорта
statusstringстатус экспорта
videoUrlstringссылка на готовое видео
previewUrlstringссылка на превью
errorMessagestringтекст ошибки (если есть)
createdAtUtcdatetimeдата создания
completedAtUtcdatetimeдата завершения

Ошибки: 403 Forbidden, 404 Not Found, 500 Server Error


POST /v1/cameras/{cameraId}/exports/audio

Request Body:

{
"startDate": "2026-04-10T08:00:00Z",
"durationSeconds": 120,
"callbackUrl": "https://example.com/webhook"
}

Response 202:

{ "exportId": "afa85f64-5717-4562-b3fc-2c963f66afa3", "status": "Queued" }

Ошибки: 400 Bad Request, 404 Not Found, 500 Server Error


GET /v1/cameras/{cameraId}/exports/audio/{exportId}

Response 200:

{
"exportId": "afa85f64-5717-4562-b3fc-2c963f66afa3",
"status": "Completed",
"audioUrl": "https://example.com/audio.mp3",
"errorMessage": null,
"createdAtUtc": "2026-04-10T08:00:00Z",
"completedAtUtc": "2026-04-10T08:02:00Z"
}
ПолеТипОписание
exportIduuidидентификатор экспорта
statusstringстатус экспорта
audioUrlstringссылка на аудиофайл
errorMessagestringтекст ошибки (если есть)
createdAtUtcdatetimeдата создания
completedAtUtcdatetimeдата завершения

Ошибки: 403 Forbidden, 404 Not Found, 500 Server Error


SortOrder: None · Asc · Desc

CameraPlatform: Embedded · ThirdParty · Mobile

ClientsEventType: Motion · Human · Vehicle · LineCrossing · Intrusion · PeopleCounting · LicensePlate · Pet · PersonalMobilityVehicle · Face · Custom