Replies: 3 comments 3 replies
-
|
That's great, once it reaches feature parity with the undocumented API we can switch over to it |
Beta Was this translation helpful? Give feedback.
-
|
I gave it a try earlier today and some observations below: Bootstraphttps://{host}/proxy/protect/api/bootstrap doesn't support X-API-KEY header for authentication and still requires the cookie. This makes sense as the bootstrap endpoint is not part of the official documentation. Ring settings for ChimesThe documentation states that the volume attribute should be returned for a chime and the onofficial API returns the correct value of 80, but the official one (https://{host}/proxy/protect/integration/v1/chimes/65c4d8d6034c4b03e40004fa) returns an empty array for ringSettings. {
"id": "65c4d8d6034c4b03e40004fa",
"modelKey": "chime",
"state": "CONNECTED",
"name": "Chime hall",
"cameraIds": [
"61684e1203053d038700077c"
],
"ringSettings": []
}Privacy zonesAnother thing is that fields like privacy zones are not returned in the official API so actions like unifiprotect.remove_privacy_zone won't work. I assume that's not a commonly used action but it's a breaking change nonethless. SnapshotsMaking a snapshot is supported via v1/cameras/{id}/snapshot official API endpoint but it doesn't support the timestamp so this is another breaking change. There are for sure more differences between the official and unofficial one that make switching over complex. |
Beta Was this translation helpful? Give feedback.
-
|
I’m also using this here as a notebook: Authorization:I’m generally in favor of the API key approach, but it would be desirable to be able to restrict its permissions—e.g., to read-only or live-only. In principle, I think that for the migration it would be good if, for a certain period of time, we could either access the public API using the API key or, even better, use our existing credentials to access the public API. I don’t currently have time for an all-at-once migration; I can only work incrementally. It would be great if we could turn a user/pass into an API Key so we can seemlessly migrate folks If you call the public API in the browser using private-API authentication, you get: And if I call the private API with the API key, I get a 500 error and find these in the protect api log: NFC and Fingerprint:The feature flags are apparently filtered here for comparison: G4 Doorbell Pro Poe (with AI Port) Public Api: Private Api: Even though I fundamentally have no problem with the filtering, it does raise questions about how quickly we’ll get access to new features in the future. And specifically, under this heading, flags like hasFingerprintSensor, supportNfc, and isDoorbell are missing. Access to keyrings is also absent, although I could personally do without keyrings if the API would return the matching user UUID on a scan event and, for NFC, additionally the NFC ID (so that Protect can handle unknown cards). You’d still need at least a user resource to map that back to a name. Bootstrap:The missing fields drastically increase the number of API calls depending on the size of your setup—especially since, for example, the RTSP URLs are omitted in GET https://YOUR_CONSOLE_IP/proxy/protect/integration/v1/cameras meaning you then have to retrieve them one camera at a time via GET https://YOUR_CONSOLE_IP/proxy/protect/integration/v1/cameras/{id}/rtsps-stream Additionally, the AI Port resource is completely absent—even though, admittedly, there are currently not many meaningful use cases for it I can't comment on the AI key or UI super link because i don’t have the hardware. Additionally, the AI Port resource is completely absent—even though, admittedly, there are currently not many meaningful use cases for it. Event Delivery & WebSocket Mismatch:The big issues for users have always been the speed at which smart detect, motion, and license plate events are delivered. I think the license plate events delivered over the WebSocket API still don’t match what’s shown in the UI. It seems like the server sends a message when the model initially detects a plate but never updates it after finishing processing to get the final value, so there’s a significant mismatch between the data coming down the WebSocket pipe and what the user sees in the UI. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Unifi Protect 5.3 added an official (with documentation!) Protect API:

I can't seem to find the documentation online, but in the Protect management console, click the gear icon, then

Control Plane, and go to theIntegrationstab. From there, there is a link to documentation:That link is hosted somewhere on your controller/NVR, but is quite nice:

Beta Was this translation helpful? Give feedback.
All reactions