Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Защита API liveview. Патч 403., UniFi Protect
 
Документация гласит, что я могу обновить (patch) живое изображение, отправив PATCH-запрос на /v1/liveviews/id. Если я получаю живое изображение и его ID через /v1/liveviews[
], и когда я смотрю в API, там написано отправлять PATCH на /v1/liveviews/id, поэтому я отправляю PATCH на /v1/liveviews/615b42b7011c9003e7000492 с телом {
"modelKey": "liveview",
"name": "string",
"isDefault": true,
"isGlobal": true,
"owner": "68119bcf00c4e903e40e434d",
"layout": 4,
"slots": [
{
"cameras": [
"66d025b301ebc903e80003ea"
],
"cycleMode": "motion",
"cycleInterval": 0
}
]
}
В ответ я получаю HTTP 400 с телом {
"error": "Failed to parse 'request-body'",
"name": "ZOD_PARSE_ERROR",
"entity": "request-body",
"issues": [
{
"code": "unrecognized_keys",
"keys": [
"modelKey",
"isDefault",
"owner"
],
"path": [],
"message": "Unrecognized key(s) in object: 'modelKey', 'isDefault', 'owner'"
}
],
"isUserError": true
}
Документация гласит, что modelKey, isDefault и owner — обязательные. Если я уберу эти свойства и отправлю PATCH, я получу 403.{
"error": "Unauthorized request",
"name": "UNAUTHORIZED",
"requiredAccess": "write"
}
Поэтому я не понимаю, что делаю не так. Если скопировать образец запроса (я знаю, что layout и cameras не существуют), то я получаю тот же HTTP 400. Кроме того, если использовать Curl в командной строке:
curl -k -X PATCH "https://DEVICEIP/proxy/network/integration/v1/liveviews/615b42b701­1c9003e7000492" -H "X-API-KEY: APIKEY" -H "Accept: application/json" -H "Content-Type: application/json" -d "{\"modelKey\":\"liveview\",\"name\":\"string\",\"isDefault\":true,\"isGlobal\":true,\"owner\":\"68119bcf00c4e903e40e434d\",\"layout\":4,\"slots\":[{\"cameras\":[\"66d025b301ebc903e80003ea\"],\"cycleMode\":\"motion\",\"cycleInterval\":0}]}"
то я получаю:
{"statusCode":404,"statusName":"NOT_FOUND","message":"No endpoint PATCH /integration/v1/liveviews/615b42b7011c9003e7000492.","timestamp":"2025-05-20T21:31:28.619062485Z","requestPath":"/integration/v1/liveviews/615b42b7011c9003e7000492"}
 
Удалось отредактировать живую-визуализацию через API. Ключевой момент был в том, что живая-визуализация изначально должна была быть создана через API. Это становится понятно, если запросить GET /proxy/protect/integration/v1/liveviews и проверить значения "owner" для каждой живой-визуализации. Живые-визуализации, созданные через API, и те, что созданы через Web UI, имеют разных "владельцев". В итоге, мне удалось назначить эту новую живую-визуализацию Viewport, и как только камера фиксирует движение, я временно переключаю живую-визуализацию на эту камеру через API, а затем возвращаю её к камере по умолчанию после окончания движения, используя motion webhooks + кастомный бинари для координации всей этой возни. Если бы разработчики ubiquity позволили переключать живые-визуализации/Viewport через Event Manager нативно в web ui, можно было бы избежать всей этой "халтуры"...
Страницы: 1
Читают тему (гостей: 1)