Device capability model
Device capability model
After a device is bound, settings, PTZ, motion detection, and most alarms should use v2 capabilities (device.property.* / device.service.invoke). Device lists, online state, and bind flags live under Device management. Read the call order on Capability usage, then open the leaf you need.
Capability catalog and identifiers
device.capability.list returns groups. Each group has a response-only capabilityId (for example detection.motion). Do not send capabilityId to get/set/invoke or use it to look up alarms. Use the full propertyId / serviceId / eventId from that list.
This book does not document a request field named targetId. Do not add one until a method table lists it.
device.capability.list
POST https://openapi-[DataCenter].easy4ip.com/openapi/v2/device.capability.list
- Bound device: pass
deviceId. Unbound returnsDV2013. - Before bind, you may pass
productIdfrom device details. If both are sent, the device wins; a mismatched model returnsDV2009. - The list is not trimmed by permission.
- Only
propertyId/serviceIdvalues from this list should be used with v2 get/set/invoke.
Channel-level items need channelId (IPCs often "0"). Omitting it on a channel call returns DV2007. Details: List capabilities.
Property, service, and event
| Goal | Method | Page |
|---|---|---|
| Read properties | device.property.get | Read properties |
| Write properties | device.property.set | Write properties |
| One-shot actions (PTZ, snapshot) | device.service.invoke | Invoke a service |
| Device events | callback capabilityEvent | Device messages |
Host for get/set/invoke: POST https://openapi-[DataCenter].easy4ip.com/openapi/v2/{methodName}. Request body: id, system, params. Sign like any other OpenAPI call. Pass deviceId for a bound device; productId is optional (product model—same rules as list: if sent and it does not match the device → DV2009).
Discovery-only leaves have no get/set/invoke examples—do not call them.
Legacy HTTP APIs
Some existing clients still call POST /openapi/{method}. Legacy APIs documents each method: new integrations should prefer v2 device APIs or capability leaves; keep the old call only when that page says so for a client you already ship.
| Scenario | New integrations start here |
|---|---|
| Lists / detail / online / bind state | V2 queries under Device management |
| PTZ, record plans, alarm parameters | Capability usage or the matching legacy page |
| Live, cloud record, account, bind | Current modules in API reference, not the legacy section |
Overseas does not publish the old things-model OpenAPI
getProductModel, iotDeviceControl, and similar things-model OpenAPI methods are not published for overseas integrations. Use device.property.* and device.service.invoke. Device hosting is not offered. Source: Device capabilities & events.
