0% found this document useful (0 votes)
370 views995 pages

Face Recognition Dev Guide Clean

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
370 views995 pages

Face Recognition Dev Guide Clean

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 995

Aj

im
Co en
ng ez
el .c
ad on
os fr
y ema
Fr rc
es a@
co gr
s up
Ma oc
ri on
no fr
s, em
C. arc
A a.
co
m
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE DOCUMENT IS PROVIDED "AS IS" AND "WITH ALL
FAULTS AND ERRORS". OUR COMPANY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
NON-INFRINGEMENT. IN NO EVENT WILL OUR COMPANY BE LIABLE FOR ANY SPECIAL, CONSEQUENTIAL,
INCIDENTAL, OR INDIRECT DAMAGES, INCLUDING, AMONG OTHERS, DAMAGES FOR LOSS OF BUSINESS PROFITS,
BUSINESS INTERRUPTION OR LOSS OF DATA, CORRUPTION OF SYSTEMS, OR LOSS OF DOCUMENTATION,
WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, IN CONNECTION
WITH THE USE OF THE DOCUMENT, EVEN IF OUR COMPANY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES OR LOSS.

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
1 Reading Guide
Chapter Description
Includes the ISAPI overview, applicable products, terms and definitions, abbreviations, and update
Overview
history.
ISAPI
Read the chapter to take a quick look at the ISAPI framework and basic functions.
Framework

m
Quick Start Read the chapter to quickly understand the programming process of basic functions such as

co
Guide authentication, message parsing, real-time live view, playback, and event uploading.

a.
API
Start programming according to API definitions.

C. arc
Reference

s, em
2 Overview

A
no fr
2.1 Introduction

ri on
Intelligent Security API (hereinafter referred to as ISAPI) is an application layer protocol based on HTTP (Hypertext

Ma oc
Transfer Protocol) and adopts the REST (Representational State Transfer) architecture for communication between
up
security devices (cameras, DVRs, NVRs, etc.) and the platform or client software.
Since established in 2013, ISAPI has included more than 11,000 APIs for different functions, including device
co gr

management, vehicle recognition, parking lot management, intelligent facial application, access control management,
es a@

interrogation management, and recording management. It is applicable to industries such as traffic, fire protection,
education, and security inspection.
Fr rc

2.1.1 Application Scenario


y ema

When you integrate devices via ISAPI, the device acts as the server to listen on the fixed port and the user's application
os fr

acts as the client to actively log in to the device for communication. To achieve the above goals, the device should be
configured with a fixed IP address and the requests from the client can reach the server.
ad on
el .c
ez
en
im
ng
Aj
Co

2.1.2 Layers in the Network Model


ISAPI is an application layer protocol based on HTTP, thereby it inherits all specifications and properties from HTTP.
Protocols frequently used along with ISAPI include SADP (Search Active Device Protocol) based on multicast for
discovering and activating devices, RTSP (Real-Time Streaming Protocol) based on TCP/UDP for live view and video
playback of devices, etc.

m
co
a.
C. arc
s, em
A
2.2 Product Scope

no fr
Face Recognition Terminals

ri on
Pro Series

Ma oc
DS-K1T607, DS-K1T607E, DS-K1T642, DS-K1T642E, DS-K1T642EF, DS-K1T642EFW, DS-K1T642EW, DS-
up
K1T642M, DS-K1T642MF, DS-K1T642MFW, DS-K1T642MW, DS-K1T643MWX-T, DS-K1T643MX-T, DS-
co gr

K1T670MFWX, DS-K1T670MWX-QR, DS-K1T670MX, DS-K1T670MX-QR, DS-K1T671, DS-K1T671AM, DS-


K1T671BM, DS-K1T671BMF, DS-K1T671BMFW, DS-K1T671BMW, DS-K1T671M, DS-K1T671MF, DS-
es a@

K1T673DWX, DS-K1T673DX, DS-K1T6Q-F71M, DS-K1T6QT-F72DWX, DS-K1T6QT-F72DX, DS-K1TA70MI-T


Fr rc

2.3 Terms And Definitions


y ema

2.3.3 Event
os fr

It refers to the information uploaded by the device. The event is uploaded by the device in real time for the immediate
ad on

response from the client or the platform. If the device is offline, the event will be stored in the cache first and then it will
be uploaded again when the connection is restored.
el .c

2.3.2 Arming
ez

Arming means that the client establishes connection with the device so that events can be uploaded to the client via the
en

connection. The client can subscribe to some event types, and the device will upload the specified events only,
im

otherwise the device will upload all types of events to the client.
ng
Aj

2.3.4 Listen
Co

After the platform starts listening service, when an event occurs, the event information will be sent to the listening port
of the platform based on the IP address and port No., then the connection will be closed.

2.3.5 Listening Host


The listening host service can be enabled to receive the event information from devices.

2.3.6 Center
A group of independent services, including at least one device access service and one or multiple application platforms.

2.3.7 Push Mode


In push mode, the device actively sends related information to the center.
2.3.8 Pull Mode
In pull mode, the center actively accesses the device to obtained related information.

2.3.20 Person-Based Access Control


The person ID is the unique identifier for person management. A person ID is linked to a person’s credentials (card,
fingerprint, and face picture) and permissions.

2.3.21 Access Permission

m
Users can set who can open which doors at what time. The access permission contains information about the person,

co
time, and door.

a.
2.3.11 Credential Type

C. arc
Credentials are the data which are used for recognizing specific persons. Cards, fingerprints, and face pictures can be
the credentials and linked to the specified persons. When the device detects the credential, it can recognize the person

s, em
whom the credential links to via the comparison algorithm.

A
no fr
2.3.12 Person Type

ri on
Persons can be divided into normal persons, visitors, and blocklist persons according to different areas. In the access
control system, normal persons have permanent permissions to access the specified areas, visitors have temporary

Ma oc
permissions to access the specified areas, and blocklist persons do not have the permissions to access the specified
up
areas.
co gr

2.3.13 Group
es a@

A group of persons which is used in multi-factor authentication. The same person can belong to different groups at the
same time. Up to 4 groups can be added at the same time.
Fr rc

s
y ema

2.3.14 Multi-Factor Authentication


Persons in the group can only open the door by the configured authentication rule, such as swiping card, authenticated
os fr

by fingerprint, face picture, or iris.


ad on

2.3.17 Remote Verification


el .c

The platform verifies the event uploaded by the device and applies the verification result to the device for controlling
the door after completing verification.
ez
en

2.3.22 Device ID
The device ID of the location of room. It is an 11-digit number contains the phase No., building No., unit No., floor No.,
im

serial No. and Community No. It is a unique ID of the device for calling and receiving.
ng
Aj
Co

2.3.23 New Device ID


The new device ID differs from device ID in other industry. It is a 16-digit number contains the industry, device type,
version, and device ID. Format: industry # device type # version # device ID. Devices will send and receive the new
device IDs in call signaling interaction.

2.4 Symbols And Acronyms


admin: administrator
HC: Connect Mobile Client
HPP: Partner Pro
ISAPI: Intelligent Security API.
ISUP: Intelligent Security Uplink Protocol.
HTTP: Hypertext Transfer Protocol
CMS: Central Management Server.
AMS: Alarm Management Server.
OSD: On-screen display
FDLib: Face Picture Library
FDID: Face Picture Library ID
PID: Face Picture ID in the Face Picture Library
RTSP: Real-Time Streaming Protocol.

m
co
SDP: Session Description Protocol.

a.
ACS: Access Control System. The access control system controls the entrance and exit channels. The system consists of
card readers, access controllers, electric locks, exit buttons, cards, application software, etc.

C. arc
None.
APK: Android Application Package

s, em
HEOP: Embedded Open Platform

A
no fr
HiCore: Core Applications

ri on
2.5 Update History
No update record
Ma oc
up
3 ISAPI Framework
co gr
es a@

3.1 Overview
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im

Notes:
ng
Aj

In general, ISAPI refers to the communication protocol based on the HTTP standard. As ISAPI is usually used along with
Co

RTSP (Real-Time Streaming Protocol), the RTSP standard is brought into the ISAPI system.
The metadata scheme for transmitting additional information of the stream is extended based on the RTSP standard to
transmit the video stream and the structured intelligent information of the stream simultaneously. It is compatible with
the RTSP standard.

3.2 Activation
The purpose of activation is to ensure that the user can set the password for the device and the password meets the
security requirement. After the device is activated, you can use the related functions.
ISAPI is a communication protocol running on the application layer. When activating the device via ISAPI, you should
know the device's IP address and make sure that the device is connected to the client.
The web application built in the device supports activating the device via ISAPI. When you enter the device's IP address
in the address bar of the web browser on the PC, you can activate the device according to the activation guide.
If you want to activate the device on your own application, you need to integrate the activation function via ISAPI. The
API calling flow and related APIs are shown below.

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema

Firstly, two operations are defined:


bytesToHexstring: it is used to convert a byte array (the length is N) to a hexadecimal string (the length is 2N). For
os fr

example, 127,10,23 -> 7f0a17


hexStringToBytes: it is used to convert a hexadecimal string (the length is 2N) to a byte array (the length is N). For
ad on

example, 7f0a17 -> 127,10,23


el .c

1. The client generates a public and private key pair (1024 bits), and gets the 128-byte modulus in the public key
ez

(hereinafter referred to as public key modulus). If the length is longer than 128, the leading 0 needs to be removed.
2. The client converts the public key modulus to a 256-byte public key string via bytesToHexstring and sends the
en

public key string to the device in XML message (related URI: POST /ISAPI/Security/challenge ) after being
im

encoded by Base64.
ng

3. The device parses the request to obtain a 256-byte public key string decoded by Base64 and converts it to a 128-
Aj

byte public key modulus via hexStringToBytes. The complete public key is the combination of obtained public key
Co

modulus and public exponent (the default value is '010001' ).


4. The device generates a 32-byte hexadecimal random string, calls the RSA API to encrypt the random string with
the private key, converts the encrypted data to a string via bytesToHexstring, encodes the string by Base64, and
then sends it to the client.
5. The client decodes the string from the device by Base64, converts it via hexStringToBytes to get the encrypted data,
decrypts the encrypted data with the private key via RSA to obtain a 32-byte hexadecimal random string, converts
the obtained string via hexStringToBytes to get a 16-byte AES key. Then the client uses the AES key to encrypt the
"string consisting of the first 16 characters of the random string and the real password" by AES128
ECB mode (with zero-padding method) to get a ciphertext, and converts the ciphertext via bytesToHexstring,
encodes it by Base64, and sends it to the device in XML message (related URI: PUT /ISAPI/System/activate ).
Note: If the first 16 characters of the random string are aaaabbbbccccdddd and the real password is Abc12345 , the
data before encryption is aaaabbbbccccddddAbc12345 . This can ensure that the client uses the random string as the
key for encryption.
6. The device decodes the string by Base64, converts it via hexStringToBytes to get the ciphertext, uses the AES key to
decrypt the ciphertext by AES128 ECB mode, and gets the real password via removing the first 16 characters.
7. The device verifies the password and returns the activation result.
Notes:
You can get the device's activation status by calling the URI GET /SDK/activateStatus which requires no
authentication.
Devices also support to be activated via SADP (Search Active Device Protocol) which is based on the
communication protocol of the data link layer. With SADP, you do not have to know the IP address of the device

m
but need to ensure that the device and the application running SADP are connected to the same router. SADP also

co
supports discovering devices in the LAN, changing the password of the devices, and so on. The HCSadpSDK is

a.
provided for SADP integration, including the developer guide, plug-in, and sample demo which can be used as a
simple SADP tool.

C. arc
3.3 Security Mechanism

s, em
A
3.3.1 Authentication

no fr
When the client applications send requests to devices, they need to use digest authentication (see details in RFC 7616)

ri on
for identity authentication.

Ma oc
Currently, all mainstream request class libraries of HTTP have encapsulated digest authentication. See details in
Authentication of Quick Start Guide.
up
3.3.2 User Permission
co gr

There are three kinds of users with different permissions for access control and management.
es a@

Administrator: Has the permission to access all supported resources and should keep activated all the time. It is also
Fr rc

known as "admin".
y ema

Operator: Has the permission to access general resources and a part of advanced resources.
Normal User: Only has the permission to access general resources.
os fr

3.3.3 Information Encryption


ad on

During ISAPI integration, the HTTPS service of devices is enabled by default. When the client applications communicate
el .c

with devices via HTTPS, the information can be transmitted securely.


ez

3.4 Video Streaming


en

3.4.1 Audio and Video Stream


im

ISAPI supports getting and setting stream media parameters of the device, such as video resolution, encoding format,
ng
Aj

and stream.
Co

Cameras support standard RTSP (Real-Time Streaming Protocol, see details in RFC 7826). Client applications can get
the stream from devices via RTSP.
For details about real-time streaming and video playback, refer to Real-Time Live View and Playback in Quick Start
Guide.

3.4.2 Metadata
The metadata is the structured intelligent information generated by intelligent devices. When the client applications get
the audio and/or video stream from devices via RTSP, the metadata will be returned by the device at the same time. For
example, to display the face target frame, face information, vehicle target frame, license plate number, vehicle
information, and other information on the video stream, the client applications can overlay the above information on
the video image.
Before using the metadata, you need to enable the metadata function of the device and then get the stream from the
device via RTSP. Some devices support subscribing to the metadata by type. For details about the process of integrating
the metadata function, refer to Metadata Management.

4 Quick Start Guide


4.1 Authentication
When the client applications send requests to the devices, they need to use digest authentication (see details in RFC

m
7616) for identity authentication.

co
Client applications only need to call APIs of the class library to implement the digest authentication. The sample code is

a.
shown below.

C. arc
4.1.1 C/C++ (libcurl)

s, em
// #include <curl/curl.h>

A
// Callback Function

no fr
static size_t OnWriteData(void* buffer, size_t size, size_t nmemb, void* lpVoid)
{
std::string* str = dynamic_cast<std::string*>((std::string *)lpVoid);

ri on
if( NULL == str || NULL == buffer )
{
return -1;

Ma oc
} up
char* pData = (char*)buffer;
str->append(pData, size * nmemb);
return nmemb;
co gr

std::string strUrl = "http://192.168.18.84:80/ISAPI/System/deviceInfo";


es a@

std::string strResponseData;
CURL *pCurlHandle = curl_easy_init();
curl_easy_setopt(pCurlHandle, CURLOPT_CUSTOMREQUEST, "GET");
Fr rc

curl_easy_setopt(pCurlHandle, CURLOPT_URL, strUrl.c_str());


// Set the user name and password
y ema

curl_easy_setopt(pCurlHandle, CURLOPT_USERPWD, "admin:admin12345");


// Set the authentication method to the digest authentication
curl_easy_setopt(pCurlHandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
// Set the callback function
os fr

curl_easy_setopt(pCurlHandle, CURLOPT_WRITEFUNCTION, OnWriteData);


// Set the parameters of the callback function to get the returned information
curl_easy_setopt(pCurlHandle, CURLOPT_WRITEDATA, &strResponseData);
ad on

// Timeout settings for receiving the data. If receiving data is not completed within 5 seconds, the application will exit directly
curl_easy_setopt(pCurlHandle, CURLOPT_TIMEOUT, 5);
// Set the redirection times to avoid too many redirections
el .c

curl_easy_setopt(pCurlHandle, CURLOPT_MAXREDIRS, 1);


// Connection timeout duration. If the duration is too short, the client application will be disconnected before the data request sent by the application
ez

reaches the device


curl_easy_setopt(pCurlHandle, CURLOPT_CONNECTTIMEOUT, 5);
CURLcode nRet = curl_easy_perform(pCurlHandle);
en

if (0 == nRet)
{
// Output the received message
im

std::cout << strResponseData << std::endl;


}
ng
Aj

curl_easy_cleanup(pCurlHandle);
Co

4.1.2 C# (WebClient)
// using System.Net;
// using System.Net.Security;
try
{
string strUrl = "http://192.168.18.84:80/ISAPI/System/deviceInfo";
WebClient client = new WebClient();
// Set the user name and password
client.Credentials = new NetworkCredential("admin", "admin12345");
byte[] responseData = client.DownloadData(strUrl);
string strResponseData = Encoding.UTF8.GetString(responseData);
// Output received information
Console.WriteLine(strResponseData);
}
catch (Exception ex)

m
{
Console.WriteLine(ex.Message);

co
}

a.
4.1.3 Java (HttpClient)

C. arc
// import org.apache.commons.httpclient.HttpClient;

s, em
String url = "http://192.168.18.84:80/ISAPI/System/deviceInfo";
HttpClient client = new HttpClient();

A
// Set the user name and password

no fr
UsernamePasswordCredentials creds = new UsernamePasswordCredentials("admin", "admin12345");
client.getState().setCredentials(AuthScope.ANY, creds);
GetMethod method = new GetMethod(url);

ri on
method.setDoAuthentication(true);
int statusCode = client.executeMethod(method);

Ma oc
byte[] responseData = method.getResponseBodyAsString().getBytes(method.getResponseCharSet());
String strResponseData = new String(responseData, "utf-8");
method.releaseConnection();
up
// Output received information
System.out.println(strResponseData);
co gr
es a@

4.1.4 Python (requests)


Fr rc

# - *- coding: utf-8 -*-


y ema

import requests
request_url = 'http://192.168.18.84:80/ISAPI/System/deviceInfo'
# Set the authentication information
auth = requests.auth.HTTPDigestAuth('admin', 'admin12345')
os fr

# Send the request and receive response


response = requests.get(request_url, auth=auth)
# Output response content
ad on

print(response.text)
el .c

4.2 Message Parsing


ez
en

4.2.1 Message Format


im

During the process of communication and interaction via ISAPI, the request and response messages are often text data
ng

in XML or JSON format. Besides that, the data of firmware packages and configuration files is in binary format. A
Aj

request can also be in form format with multiple formats of data (multipart/form-data).
Co

4.2.1.1 XML
Generally, the Content-Type in the headers of the HTTP request is application/xml; charset="UTF-8" .
Request and response messages in XML format are all encoded with UTF-8 standards in ISAPI.
The namespace http://www.isapi.org/ver20/XMLSchema and ISAPI version number 2.0 of XML messages are
configured by default, see the example below.
<?xml version="1.0" encoding="UTF-8"?>
<NodeList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<Node>
<id>1</id>
<enabled>true</enabled>
<nodeName>nodeName</nodeName>
<level>level1</level>
</Node>
</NodeList>

4.2.1.2 JSON

m
The Content-Type in the headers of the HTTP request is often application/json .

co
To distinguish between APIs with XML messages and those with JSON messages, ISAPI adds the query parameter

a.
format=json to all request URLs with JSON messages, e.g.,
http://192.168.1.1:80/ISAPI/System/Sensor/thermometrySensor?format=json . Messages of request URLs without

C. arc
the query parameter format=json are usually in XML format. However, there may be some exceptions, and the message
format is subject to the API definition.

s, em
Request and response messages in JSON format are all encoded by UTF-8 in ISAPI.

A
no fr
4.2.1.3 Binary Data

ri on
For the firmware and configuration files, the Content-Type in the header of an HTTP request is often

Ma oc
application/octet-stream . up
4.2.1.4 Form (multipart/form-data)
co gr

When multiple pieces of data are submitted at the same time in an ISAPI request (e.g., the person information and face
picture need to be submitted at the same time when a face record is added to the face picture library), the Content-
es a@

Type in the header of the corresponding HTTP request is usually multipart/form-data, boundary=AaB03x , where the
boundary is a variable used to separate the entire HTTP body into multiple units and each unit is a piece of data with its
Fr rc

own headers and body. In Content-Disposition of form unit headers, the name property refers to the form unit name,
y ema

which is required for all form units; the filename property refers to the file name of form unit body, which is required
only when the form unit body is a file. In headers of form units, Content-Length refers to the body length, which starts
after CRLF( \r\n ) and ends before two hyphens ( -- ) of next form. There should be a CRLF used as the delimiter of two
os fr

form units before two hyphens ( -- ), and the Content-Length of previous form unit does not include the CRLF length.
ad on

For the detailed format description, refer to RFC 1867 (Form-Based File Upload in HTML). Pay attention to two hyphens
( -- ) before and after the boundary.
el .c

Notes
ez

In RFC specifications, it is strongly recommended to contain the field Content-Length in the entity header, and
en

there is no requirement that the field Content-Length should be contained in the header of each form element.
The absence of field Content-Length in the header should be considered when the client and device programs
im

parse the form data.


ng
Aj

To avoid the conflict between message content and boundary value, it is recommended to use a longer and more
Co

complex string as the boundary value.


The example of ISAPI form data submitted by a client to a device is as follows.
POST /ISAPI/Intelligent/FDLib/pictureUpload
Content-Type: multipart/form-data; boundary=e5c2f8c5461142aea117791dade6414d
Content-Length: 56789

--e5c2f8c5461142aea117791dade6414d
Content-Disposition: form-data; name="PictureUploadData";
Content-Type: application/xml
Content-Length: 1234

<PictureUploadData/>
--e5c2f8c5461142aea117791dade6414d
Content-Disposition: form-data; name="face_picture"; filename="face_picture.jpg";
Content-Type: image/jpeg
Content-Length: 34567

m
Picture Data

co
--e5c2f8c5461142aea117791dade6414d--

a.
The example of ISAPI form data responded from a device to a client is as follows.

C. arc
In ISAPI messages, when there are multiple form units, three nodes ( pid , contentid , and filename ) are used for linking
form units. The corresponding relations are as follows:

s, em
Node Form

A
Description

no fr
Name Field

ri on
pid in XML/JSON messages corresponds to the name property of Content-Disposition in
pid name
form headers.
Content-
Ma oc
up
contentid contentid in XML/JSON messages corresponds to Content-ID in form headers.
ID
co gr

filename in XML/JSON messages corresponds to filename property of Content-Disposition in


filename filename
form headers.
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
HTTP/1.1 200 OK
Content-Type: multipart/form-data; boundary=136a73438ecc4618834b999409d05bb9
Content-Length: 56789

--136a73438ecc4618834b999409d05bb9
Content-Disposition: form-data; name="mixedTargetDetection";
Content-Type: application/json
Content-Length: 811

{
"ipAddress": "172.6.64.7",
"macAddress": "01:17:24:45:D9:F4",
"channelID": 1,
"dateTime": "2009-11-14T15:27+08:00",

m
"eventType": "mixedTargetDetection",
"eventDescription": "Mixed target detection",

co
"deviceID": "123456789",
"CaptureResult": [{

a.
"targetID": 1,
"Human": {
"Rect": {

C. arc
"height": 1.0,
"width": 1.0,
"x": 0.0,
"y": 0.0

s, em
},
"contentID1": "humanImage", /*human body thumbnail*/

A
"contentID2": "humanBackgroundImage", /*human body background picture*/

no fr
"pId1": "9d48a26f7b8b4f2390c16808f93f3534", /*human body thumbnail ID */
"pId2": "5EE7078E07BB47CF860DE8E4E9A85F28" /*ID of human body background picture*/
}

ri on
}]
}

Ma oc
--136a73438ecc4618834b999409d05bb9
Content-Disposition: form-data; name="9d48a26f7b8b4f2390c16808f93f3534"; filename="humanImage.jpg";
Content-Type: image/jpeg
up
Content-Length: 34567
Content-ID: humanImage
co gr

Picture Data
--136a73438ecc4618834b999409d05bb9
es a@

Content-Disposition: form-data; name="5EE7078E07BB47CF860DE8E4E9A85F28"; filename="humanBackgroundImage.jpg";


Content-Type: image/jpeg
Content-Length: 345678
Fr rc

Content-ID: humanBackgroundImage

Picture Data
y ema

--136a73438ecc4618834b999409d05bb9--
os fr

4.2.2 Annotation
ad on

The field descriptions of ISAPI request and response messages are marked as annotations in the example messages as
shown below.
el .c
ez

<?xml version="1.0" encoding="UTF-8"?>

<NodeList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


en

<!--ro, req, object, node list, attr:version{req, string, version No., range:[,]}-->
<Node>
im

<!--ro, opt, object, node information-->


<id>
ng

<!--ro, req, int, node No., range:[,], step:, unit:, unitType:-->1


Aj

</id>
<enabled>
Co

<!--ro, opt, bool, whether to enable-->true


</enabled>
<nodeName>
<!--ro, req, string, node name, range:[1,32]-->test
</nodeName>
<level>
<!--ro, opt, enum, level, subType:string,
[level1#level 1,level2#level 2,level3#level 3]-->level1
</level>
</Node>
</NodeList>
{
"name": "test",
/*ro, req, string, name, range:[1,32]*/
"type": "type1",
/*ro, req, enum, type, subType:string, [type1#type 1,type2#type 2]*/
"enabled": true,
/*ro, opt, bool, enable or not, desc:xxxxxxx*/
"NodeList": {
/*opt, object, node list, dep:and,{$.enabled,eq,true}*/
"scene": 1,
/*req, enum, scene, subType:int, [1#scene 1; 2#scene 2; 3#scene 3]*/
"ID": 1
/*req, int, No., range:[1,8], step:, unit:, unitType:*/
}

m
}

co
Key annotations are shown in the table below.

a.
Annotation Description Remark

C. arc
Attribute: Read-
ro This field can only be obtained and cannot be edited.
Only

s, em
A
Attribute: Write-

no fr
wo This field can only be edited and cannot be obtained.
Only

ri on
Attribute: This field is required for request messages sent to the device and response
req

Ma oc
Required up messages returned from the device.
Attribute: This field is optional for request messages sent to the device and response
opt
Optional messages returned from the device.
co gr

Attribute:
es a@

dep This field is valid and required when specific conditions are satisfied.
Dependent
Fr rc

object Field Type: Object The field of type object contains multiple sub-fields.
y ema

list Field Type: List The subType following it refers to the data type of sub-items in the list.
The range following it refers to the maximum and the minimum string size of the
os fr

subType Field Type: String


field.
ad on

int Field Type: Int The range following it refers to the maximum and the minimum value of the field.
el .c

float Field Type: Float The range following it refers to the maximum and the minimum value of the field.
ez

Field Type:
bool The value can be true or false.
en

Boolean
im

Field Type: The subType following it indicates that the enumerators are of type string or int.
enum
ng

Enumeration The [] following the subType contains all enumerators.


Aj
Co

When the type of field is list or enum, the value of subType is the data type of each
subType Sub-Type of Field
sub-object.
desc Field Description The detailed description of the field.

4.2.3 Capability Set


ISAPI has designed capability sets for almost all functions, APIs, and fields. URLs for getting the capability set end with
/capabilities . Some URLs may contain query parameters in the format: /capabilities?format=json&type=xxx .
There are two types of fields in the capability message of ISAPI: whether the device supports a function and the value
range of a field in an API.
Whether the device supports a function: it is often in the format isSupportXxxxxxxx , which indicates that whether
the device supports a function and a set of APIs for implementing this function.
{
"isSupportMap": true,
/*ro, opt, bool, whether it supports the e-map function, desc:/ISAPI/SDT/Management/map/capabilities?format=json*/
"isSupportAlgTrainResourceInfo": true,
/*ro, opt, bool, whether it supports only getting the resource information of the algorithm training platform,
desc:/ISAPI/SDT/algorithmTraining/ResourceInfo?format=json*/
"isSupportAlgTrainAuthInfo": true,
/*ro, opt, bool, whether it supports ony getting the authorization information of the algorithm training platform,
desc:/ISAPI/SDT/algorithmTraining/SoftLock/AuthInfo?format=json*/
"isSupportAlgTrainNodeList": true,
/*ro, opt, bool, whether it supports only getting the node information of the algorithm training platform, desc:/ISAPI/SDT/algorithmTraining/NodeList?
format=json*/
"isSupportNAS": true
/*ro, opt, bool, whether it supports mounting and unmounting NAS, desc:/ISAPI/SDT/Management/NAS/capabilities?format=json*/

m
}

co
The value range of the field: the maximum value, minimum value, the maximum size, the minimum size, options,

a.
and so on of each field of the API.

C. arc
{
"boolType": {
/*req, object, example of the capability of type bool*/

s, em
"@opt": [true, false]

A
/*req, array, options, subType: bool*/

no fr
},
"integerType": {
/*req, object, example of the capability of type integer*/

ri on
"@min": 0,
/*ro, req, int, the minimum value*/
"@max": 100

Ma oc
/*ro, req, int, the maximum value*/
},
up
"stringType": {
/*req, object, example of the capability of type string*/
"@min": 0,
co gr

/*ro, req, int, the minimum string size*/


"@max": 32
/*ro, req, int, the maximum string size*/
es a@

},
"enumType": {
Fr rc

/*req, object, capability example of type enum*/


s

"@opt": ["enum1", "enum2", "enum3"]


/*req, array, options, subType: string*/
y ema

}
}
os fr

Note: For the same capability set, devices of different models and versions may return different results. The values
shown in this document are only examples for reference. The capability set actually returned by the device takes
ad on

precedence.
el .c

4.2.4 Time Format


ez

ISAPI adopts ISO 8601 Standard Time Format, which is the same as W3C Standard Date and Time Formats.
en

Format: YYYY-MM-DDThh:mm:ss.sTZD
im
ng

YYYY = the year consisting of four decimal digits


Aj

MM = the month consisting of two decimal digits (01-January, 02-February, and so forth)
DD = the day consisting of two decimal digits (01 to 31)
Co

hh = the hour consisting of two decimal digits (00 to 23, a.m. and p.m. are not allowed)
mm = the minute consisting of two decimal digits (00 to 59)
ss = the second consisting of two decimal digits (00 to 59)
s = one or more digits representing the fractional part of a second
TZD = time zone identifier (Z or +hh:mm or -hh:mm)

Example: 2017-08-16T20:17:06.123+08:00 refers to 20:17:06.123 on August 16, 2017 (local time which is 8 hours
ahead of UTC). The plus sign (+) indicates that the local time is ahead of UTC, and the minus sign (-) means that the
local time is behind UTC.
After the DST is enabled, the local time and time difference will change compared with UTC, and the values of related
fields also need to be changed. Disabling the DST will bring into the opposite effect.
Example: In 1986, the DST was in effect from May 4 at 2:00 a.m. (GMT+8). During the DST period, the clocks were
moved one hour ahead, which means that there was one less hour on that day. When the DST ends at 2:00 a.m. on
September 14, 1986, the clocks were moved one hour back and there was an extra hour on that day. The changes of the
time are as follows:
DST Starts: 1986-05-04T02:00:00+08:00 --> 1986-05-04T03:00:00+09:00
DST Ends: 1986-09-14T02:00:00+09:00 --> 1986-09-14T01:00:00+08:00
Notes:

m
The time difference cannot be simply used to determine the time zone. Because when the DST starts, the time

co
difference will change and it cannot represent the actual time zone.

a.
Both TZ (UTC time, e.g., 1986-05-03T18:00:00Z) and TD (local time and time difference, e.g., 1986-05-
04T02:00:00+08:00) meet the time format standards of ISO 8601. In ISAPI, the TD format is recommended to be

C. arc
used in messages sent from the user applications and the devices.
A few old-version devices will return the time in TZ format. For representing the time difference information and

s, em
forward compatibility, an extra field timeDiff is added as shown in the example below. User applications need to

A
support both TD format and TZ format when parsing the time in the messages returned by devices.

no fr
ri on
{
"dateTime": "1986-05-03T18:00:00Z", /*device time. The value in TZ format is the UTC time and the value in TD format is the time difference between the
device's local time and UTC*/

Ma oc
"timeDiff": "+08:00" /*optional, time difference between the local time and UTC time. If this field does not exist, the user application will convert
the dateTime into the local time for use*/
up
}
co gr

4.2.5 Character Set


es a@

To prevent characters not commonly used from resulting in exceptions in device programs and user applications, ISAPI
Fr rc

limits the valid field values of type string to a specific range of characters. Character sets allowed to be used in the fields
s

of type string in ISAPI are listed below.


y ema

Single-byte character set: lowercase letters ( a-z ), uppercase letters ( A-Z ), digits ( 0-9 ), and special characters (see
details in the table below).
os fr

Multi-byte character set: language characters based on Unicode and encoded by UTF-8 (UTF-8 encoding is a
ad on

transformation format of Unicode character set. For details, refer to RFC 2044).
el .c
ez
en
im
ng
Aj
Co
No. Name Special Character No. Name Special Character
1 Open Parenthesis ( 18 Dollar Sign $
2 Close Parenthesis ) 19 Percent Sign %
3 Plus Sign + 20 Ampersand &
4 Comma , 21 Close Single Quotation Mark '
5 Minus Sign - 22 Asterisk *

m
6 Period . 23 Slash /

co
7 Semicolon ; 24 Smaller Than <

a.
8 Equal Sign = 25 Greater Than >

C. arc
9 At Sign @ 26 Question Mark ?

s, em
10 Open Square Bracket [ 27 Caret ^

A
no fr
11 Close Square Bracket ] 28 Open Single Quotation Mark '

ri on
12 Underscore _ 29 Vertical Bar |

Ma oc
13 Open Brace { 30 Tilde ~
up
14 Close Brace } 31 Double Quotation Marks "
co gr

15 Space 32 Colon :
es a@

16 Exclamation Mark ! 33 Backslash |


Fr rc

17 Octothorpe #
y ema

The valid characters that can be used in some special fields are listed below.
User name: lowercase letters ( a-z ), uppercase letters ( A-Z ), digits ( 0-9 ), and characters from No. 1 to No. 30 in the
os fr

special character table.


ad on

Password: User Name: lowercase letters ( a-z ), uppercase letters ( A-Z ), digits ( 0-9 ), and characters from No. 1 to
No. 33 in the special character table.
el .c

Names displayed on the UI (device name, person name, face picture library name, etc.): lowercase letters ( a-z ),
ez

uppercase letters ( A-Z ), digits ( 0-9 ), characters from No. 1 to No. 15 in the special character table, and multi-byte
characters.
en

Normal fields of type string support lowercase letters ( a-z ), uppercase letters ( A-Z ), digits ( 0-9 ), characters from
im

No. 1 to No. 15 in the special character table, and multi-byte characters by default.
ng
Aj

4.2.6 Error Processing


Co

When requesting via ISAPI failed (the HTTP status code is not 200), the device will return the HTTP status code and
ISAPI error code. For HTTP status codes, refer to 10 Status Code Definitions in RFC 2616. For ISAPI error codes, refer to
Error Code Dictionary.
Message Example:
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset="UTF-8"
Date: Thu, 15 Jul 2021 20:43:30 GMT
Content-Length: 229
Connection: Keep-Alive

{
"requestURL": "/ISAPI/Event/triggers/notifications/channels/whiteLightAlarm",
"statusCode": 4,
"statusString": "Invalid Operation",
"subStatusCode": "notSupport",
"errorCode": 1073741825,
"errorMsg": "notSupport"
}

m
co
4.3 Real-Time Live View

a.
C. arc
4.3.1 Introduction to the Function
Supports getting and setting stream media parameters of devices such as resolution, coding format, and stream type.

s, em
Supports streaming from products via RTSP (Real Time Streaming Protocol, see details in RFC 7826).

A
no fr
4.3.2 API Calling Flow

ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. A client sends RTSP DESCRIBE commands such as DESCRIBE /ISAPI/Streaming/channels/101 RTSP/1.0 . Digest
authentication with devices is required before this step.
2. The client parses the media SDP information returned by the device.
3. Set RTSP play parameters, that is to set the track ID parsed from SDP information via SETUP commands. For
example, trackID=1 indicates videos while trackID=2 indicates audios.
4. The client sends an RTSP PLAY command, and the device will send audio stream, video stream, and metadata in
the format of PLAY /ISAPI/Streaming/channels/101 RTSP/1.0 .
5. The client receives the RTP packet sent by the device. Divided RTP packets should be assembled on the client
before being parsed.
6. The client sends the command RTSP TEARDOWN to stop streaming.
Notes:

m
Digest authentication is required in RTSP playback. The method is the same as that of ISAPI digest authentication.

co
The address format for streaming from devices is rtsp:// <host>[:port]/ISAPI/Streaming/channels/<ID> , of

a.
which <host> is the device IP address; [:port] is optional, and 554 by default; <ID> is the device channel ID * 100
+ stream type (1-main stream, 2-sub-stream, 3-third stream). For example, the IP address of the target device is

C. arc
172.7.203.11 , and the streaming address of main stream for channel 17 will be
rtsp://172.7.203.11:554/ISAPI/Streaming/channels/1701 .

s, em
RTSP also supports containing user names and passwords in URL. The format is

A
rtsp://username:password@[address]:[port]/Streaming/Channels/[id](?parm1=value1&parm2-=value2…) ,

no fr
such as /Streaming/Channels/101?transportmode=unicast .

ri on
4.3.3 Example

Ma oc
1. A client sends an RTSP DESCRIBE command.
up
DESCRIBE rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101 RTSP/1.0
co gr

CSeq:0
Accept:application/sdp
es a@

User-Agent:NKPlayer-1.00.00.081112
Fr rc

2. Server responds that authentication is required.


y ema

RTSP/1.0 401 Unauthorized


CSeq: 0
WWW-Authenticate: Digest realm="3521781c29acb312330dd668", nonce="026019333", algorithm="MD5"
os fr
ad on

3. The client sends an RTSP DESCRIBE request with authentication information again.
el .c

DESCRIBE rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101 RTSP/1.0


ez

CSeq:1
Accept:application/sdp
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101",
en

response="76a2c9c5b8edbd49838013cf1cf27941"
User-Agent:NKPlayer-1.00.00.081112
im
ng

4. The device responds to SDP information.


Aj
Co
RTSP/1.0 200 OK
CSeq: 1
Content-Type: application/sdp
Content-Length: 571
Date: Tue, 17 Nov 2020 02:09:45 GMT

v=0
o=- 1109162014219182 0 IN IP4 0.0.0.0
s= Media Server V4.22.126
i= Media Server Session Description : standard
e=NONE
c=IN IP4 0.0.0.0
t=0 0
a=control:*

m
b=AS:6154
a=range:npt=now-

co
m=video 0 RTP/AVP 96
i=Video Media

a.
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=4D0014;packetization-mode=0
a=control:trackID=1

C. arc
b=AS:6144
m=audio 0 RTP/AVP 8
i=Audio Media
a=rtpmap:8 PCMA/8000

s, em
a=control:trackID=2
b=AS:10

A
a=Media_header:MEDIAINFO=494D4B48020100000200000111710110401F000000FA000000000000000000000000000000000000;

no fr
a=appversion:1.0

ri on
5. The client sends RTSP SETUP requests, and the server responds to them.

Ma oc
SETUP rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101/trackID=1 RTSP/1.0
up
CSeq:2
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101",
co gr

response="ff343f5ff82deb028dd9b4932cc44201"
Transport:RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=0
User-Agent:NKPlayer-1.00.00.081112
es a@
Fr rc

RTSP/1.0 200 OK
Session: 1127293610;timeout=60
y ema

Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=433122aa
CSeq: 2
Accept-Ranges: NPT
Media-Properties: No-Seeking, Time-Progressing, Time-Duration=0
os fr

Date: Tue, 17 Nov 2020 02:09:45 GMT


ad on

SETUP rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101/trackID=2 RTSP/1.0


el .c

CSeq:3
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101",
ez

response="ff343f5ff82deb028dd9b4932cc44201"
Session:1127293610;timeout=60
Transport:RTP/AVP/TCP;unicast;interleaved=2-3;ssrc=0
en

User-Agent:NKPlayer-1.00.00.081112
im
ng

RTSP/1.0 200 OK
Aj

Session: 1127293610;timeout=60
Co

Transport: RTP/AVP/TCP;unicast;interleaved=2-3;ssrc=433122ab
CSeq: 3
Accept-Ranges: NPT
Media-Properties: No-Seeking, Time-Progressing, Time-Duration=0
Date: Tue, 17 Nov 2020 02:09:45 GMT

6. The client sends an RTSP PLAY request.

PLAY rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101 RTSP/1.0


CSeq:4
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101",
response="24edf8a6ff3ef767f7c49d1c847200bd"
Session:1127293610;timeout=60
Range:npt=0.000000-0.000000
User-Agent:NKPlayer-1.00.00.081112

7. The server sends audio and video stream data.


RTSP/1.0 200 OK
Session: 1127293610
CSeq: 4
Date: Tue, 17 Nov 2020 02:09:45 GMT

$. .....d1.w....c....".T....g....).i.........a....7.S..~J............X....X.

8. The client sends an RTSP TEARDOWN request, and the server responds to it.

TEARDOWN rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101 RTSP/1.0


CSeq:5

m
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/channels/101",
response="24edf8a6ff3ef767f7c49d1c847200bd"

co
Session:1127293610;timeout=60
Range:npt=0.000000-0.000000

a.
User-Agent:NKPlayer-1.00.00.081112

C. arc
RTSP/1.0 200 OK
Session: 1127293610

s, em
CSeq: 5
Date: Tue, 17 Nov 2020 02:09:50 GMT

A
no fr
ri on
4.4 Playback
4.4.1 Introduction to the Function
Ma oc
up
Devices such as cameras and NVRs can store videos. Storage mediums such as SD card, TF card and HDDs are needed
before recording videos. The process of playback starts with searching for footages and then getting video stream via
co gr

RTSP (Real Time Streaming Protocol, see details in RFC 7826).


es a@

Below is an example of playback on a web client. The calendar in the bottom-left corner shows the results of searching
for videos. Dates with videos are shown on the calendar and you can click a date to play back searched videos of the
Fr rc

corresponding day.
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

4.4.2 API Calling Flow


1. (Optional) Check the calendar to find dates with stored videos: POST
/ISAPI/ContentMgmt/record/tracks/<trackStreamID>/dailyDistribution . <trackStreamID> = channel number
* 100 + stream type (1-main stream, 2-sub-stream, 3-third stream). For example, The rackStreamID of the main
stream for channel 17 is 1701.
2. Searching for videos by parsing the playbackURI of the device to get the RTSP address POST
/ISAPI/ContentMgmt/search .
3. Play videos back via RTSP. Steps of playback via RTSP is the same as that of real-time live view. Refer to streaming
via RTSP in real-time streaming. See details in RFC 7826 (Real Time Streaming Protocol).
Notes:
Playback via RTSP needs digest authentication. The method is the same as the one of ISAPI digest authentication.
Send PAUSE command to pause playback. Send PLAY command to continue. If you want to perform fast forward
and slow forward, you can send a PLAY command and set Scale in headers. See details in 10.6 PAUSE and 12.34
Scale in RFC 7826 (Real Time Streaming Protocol).

4.4.3 Example

m
co
4.4.3.1 Search for Videos According to Calendar

a.
Request from Client

C. arc
POST /ISAPI/ContentMgmt/record/tracks/101/dailyDistribution HTTP/1.1
Host: 10.14.97.40
Connection: keep-alive

s, em
Content-Length: 119
Cache-Control: max-age=0

A
no fr
Accept: */*
X-Requested-With: XMLHttpRequest
If-Modified-Since: 0

ri on
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://10.14.97.40

Ma oc
Referer: http://10.14.97.40/doc/index.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
up
Cookie: WebSession_78aedfcc66=3b451c9d37cb637827da0815086e7ecfd9984b0095b3cb7198e8197a424a3279
co gr

<?xml version="1.0" encoding="utf-8"?>


<trackDailyParam>
<year>2021</year>
es a@

<monthOfYear>08</monthOfYear>
</trackDailyParam>
Fr rc

Response from Device


y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
HTTP/1.1 200 OK
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
Content-Type: application/xml; charset="UTF-8"
X-Content-Type-Options: nosniff
Date: Wed, 18 Aug 2021 15:47:43 GMT
Content-Length: 2915
X-XSS-Protection: 1; mode=block
Connection: Keep-Alive
Accept-Ranges: bytes

<?xml version="1.0" encoding="UTF-8" ?>


<trackDailyDistribution version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<dayList>

m
<day><id>1</id><dayOfMonth>1</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>2</id><dayOfMonth>2</dayOfMonth><record>true</record><recordType>time</recordType></day>

co
<day><id>3</id><dayOfMonth>3</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>4</id><dayOfMonth>4</dayOfMonth><record>true</record><recordType>time</recordType></day>

a.
<day><id>5</id><dayOfMonth>5</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>6</id><dayOfMonth>6</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>7</id><dayOfMonth>7</dayOfMonth><record>true</record><recordType>time</recordType></day>

C. arc
<day><id>8</id><dayOfMonth>8</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>9</id><dayOfMonth>9</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>10</id><dayOfMonth>10</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>11</id><dayOfMonth>11</dayOfMonth><record>true</record><recordType>time</recordType></day>

s, em
<day><id>12</id><dayOfMonth>12</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>13</id><dayOfMonth>13</dayOfMonth><record>true</record><recordType>time</recordType></day>

A
<day><id>14</id><dayOfMonth>14</dayOfMonth><record>false</record></day>

no fr
<day><id>15</id><dayOfMonth>15</dayOfMonth><record>false</record></day>
<day><id>16</id><dayOfMonth>16</dayOfMonth><record>false</record></day>
<day><id>17</id><dayOfMonth>17</dayOfMonth><record>false</record></day>

ri on
<day><id>18</id><dayOfMonth>18</dayOfMonth><record>true</record><recordType>time</recordType></day>
<day><id>19</id><dayOfMonth>19</dayOfMonth><record>false</record></day>

Ma oc
<day><id>20</id><dayOfMonth>20</dayOfMonth><record>false</record></day>
<day><id>21</id><dayOfMonth>21</dayOfMonth><record>false</record></day>
<day><id>22</id><dayOfMonth>22</dayOfMonth><record>false</record></day>
up
<day><id>23</id><dayOfMonth>23</dayOfMonth><record>false</record></day>
<day><id>24</id><dayOfMonth>24</dayOfMonth><record>false</record></day>
<day><id>25</id><dayOfMonth>25</dayOfMonth><record>false</record></day>
co gr

<day><id>26</id><dayOfMonth>26</dayOfMonth><record>false</record></day>
<day><id>27</id><dayOfMonth>27</dayOfMonth><record>false</record></day>
es a@

<day><id>28</id><dayOfMonth>28</dayOfMonth><record>false</record></day>
<day><id>29</id><dayOfMonth>29</dayOfMonth><record>false</record></day>
<day><id>30</id><dayOfMonth>30</dayOfMonth><record>false</record></day>
Fr rc

<day><id>31</id><dayOfMonth>31</dayOfMonth><record>false</record></day>
</dayList>
</trackDailyDistribution>
y ema

4.4.3.2 Search for Videos


os fr

Request from Client


ad on
el .c

POST /ISAPI/ContentMgmt/search HTTP/1.1


Host: 10.14.97.40
Connection: keep-alive
ez

Content-Length: 486
Cache-Control: max-age=0
Accept: */*
en

X-Requested-With: XMLHttpRequest
If-Modified-Since: 0
im

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
ng

Origin: http://10.14.97.40
Aj

Referer: http://10.14.97.40/doc/index.html
Accept-Encoding: gzip, deflate
Co

Accept-Language: zh-CN,zh;q=0.9
Cookie: WebSession_78aedfcc66=3b451c9d37cb637827da0815086e7ecfd9984b0095b3cb7198e8197a424a3279

<?xml version="1.0" encoding="utf-8"?>


<CMSearchDescription>
<searchID>88C2CD4D-D3FA-4AD4-BD80-555C18205DCC</searchID>
<trackList>
<trackID>101</trackID>
</trackList>
<timeSpanList>
<timeSpan>
<startTime>2021-08-16T00:00:00Z</startTime>
<endTime>2021-08-18T23:59:59Z</endTime>
</timeSpan>
</timeSpanList>
<maxResults>100</maxResults>
<searchResultPostion>0</searchResultPostion>
<metadataList>
<metadataDescriptor>//recordType.meta.std-cgi.com</metadataDescriptor>
</metadataList>
</CMSearchDescription>
Response from Device

HTTP/1.1 200 OK
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
Content-Type: application/xml; charset="UTF-8"
X-Content-Type-Options: nosniff
Date: Wed, 18 Aug 2021 15:19:13 GMT
Content-Length: 1021
X-XSS-Protection: 1; mode=block
Connection: Keep-Alive
Accept-Ranges: bytes

<?xml version="1.0" encoding="UTF-8" ?>

m
<CMSearchResult version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<searchID>{88c2cd4d-d3fa-4ad4-bd80-555c18205dcc}</searchID>

co
<responseStatus>true</responseStatus>
<responseStatusStrg>OK</responseStatusStrg>

a.
<numOfMatches>1</numOfMatches>
<matchList>
<searchMatchItem>

C. arc
<sourceID>{00000000-0000-0000-0000-000000000000}</sourceID>
<trackID>101</trackID>
<timeSpan>
<startTime>2021-08-18T15:18:15Z</startTime>

s, em
<endTime>2021-08-18T15:19:08Z</endTime>
</timeSpan>

A
<mediaSegmentDescriptor>

no fr
<contentType>video</contentType>
<codecType>H.264-BP</codecType>

ri on
<playbackURI>rtsp://10.14.97.40/Streaming/tracks/101/?
starttime=20210818T151815Z&amp;endtime=20210818T151908Z&amp;name=00000004667000100&amp;size=1400788</playbackURI>
<lockStatus>unlock</lockStatus>

Ma oc
<name>00000004667000100</name>
</mediaSegmentDescriptor>
<metadataMatches>
up
<metadataDescriptor>recordType.meta..com/timing</metadataDescriptor>
</metadataMatches>
co gr

</searchMatchItem>
</matchList>
</CMSearchResult>
es a@
Fr rc

4.4.3.3 Playback via RTSP


y ema

1. A client sends an RTSP DESCRIBE command.


os fr

DESCRIBE rtsp://10.14.97.40:554/Streaming/tracks/101/?starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788 RTSP/1.0


CSeq: 4
Authorization: Digest username="", realm="323852ae0234c718f2d4198b", nonce="34e30476d", uri="rtsp://10.14.97.40:554/Streaming/tracks/101/?
ad on

starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788", response="883546f4c19dd156fb3a490266c99715"
User-Agent: LibVLC/3.0.3 (LIVE555 Streaming Media v2016.11.28)
el .c

2. The server responds that authentication is required.


ez
en

RTSP/1.0 401 Unauthorized


CSeq: 5
WWW-Authenticate: Digest realm="323852ae0234c718f2d4198b", nonce="55e5895b9", algorithm="MD5"
im
ng
Aj

3. The client sends an RTSP DESCRIBE request with authentication information again.
Co

DESCRIBE rtsp://10.14.97.40:554/Streaming/tracks/101/?starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788 RTSP/1.0


CSeq: 7
Authorization: Digest username="admin", realm="323852ae0234c718f2d4198b", nonce="55e5895b9", uri="rtsp://10.14.97.40:554/Streaming/tracks/101/?
starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788", response="cf33e4dc6b86a2fdd2e5b26d25e7b99d"
User-Agent: LibVLC/3.0.3 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp

4. The server responds to SDP information.


RTSP/1.0 200 OK
CSeq: 7
Content-Type: application/sdp
Content-Length: 546
Date: Wed, 18 Aug 2021 07:29:25 GMT

v=0
o=- 1109162014219182 0 IN IP4 0.0.0.0
s= Media Server V4.60.000
i= Media Server Session Description : standard
e=NONE
c=IN IP4 0.0.0.0
t=0 0
a=control:*

m
b=AS:4106
a=range:clock=20210818T151815Z-20210818T151908Z

co
m=video 0 RTP/AVP 96
i=Video Media

a.
a=rtpmap:96 H265/90000
a=control:trackID=video
b=AS:4096

C. arc
m=audio 0 RTP/AVP 8
i=Audio Media
a=rtpmap:8 PCMA/8000
a=control:trackID=audio

s, em
b=AS:10
a=Media_header:MEDIAINFO=494D4B48020100000400050011710110401F000000FA000000000000000000000000000000000000;

A
a=appversion:1.0

no fr
ri on
5. The client sends RTSP SETUP commands two times, and the server responds to them.

Ma oc
SETUP rtsp://10.14.97.40:554/Streaming/tracks/101/?starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788/trackID=video
RTSP/1.0
up
CSeq: 8
Authorization: Digest username="admin", realm="323852ae0234c718f2d4198b", nonce="55e5895b9", uri="rtsp://10.14.97.40:554/Streaming/tracks/101/?
co gr

starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788", response="44d97a3758b7f19f1a31fe042b1464b5"
User-Agent: LibVLC/3.0.3 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=61048-61049
es a@
Fr rc

RTSP/1.0 200 OK
Session: 225263317;timeout=60
y ema

Transport: RTP/AVP;unicast;client_port=61048-61049;server_port=62000-62001;ssrc=d6d3ed5
CSeq: 8
Accept-Ranges: UTC
Media-Properties: Random-Access=1.0s, Unlimited, Immutable,Scales="-1, 0.5, 0.25, 0.125,:1, 2, 4"
os fr

Date: Wed, 18 Aug 2021 07:29:25 GMT


ad on

SETUP rtsp://10.14.97.40:554/Streaming/tracks/101/?starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788/trackID=audio
el .c

RTSP/1.0
CSeq: 9
ez

Authorization: Digest username="admin", realm="323852ae0234c718f2d4198b", nonce="55e5895b9", uri="rtsp://10.14.97.40:554/Streaming/tracks/101/?


starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788", response="44d97a3758b7f19f1a31fe042b1464b5"
User-Agent: LibVLC/3.0.3 (LIVE555 Streaming Media v2016.11.28)
en

Transport: RTP/AVP;unicast;client_port=61050-61051
Session: 225263317
im
ng
Aj

RTSP/1.0 200 OK
Co

Session: 225263317;timeout=60
Transport: RTP/AVP;unicast;client_port=61050-61051;server_port=62002-62003;ssrc=d6d3ed6
CSeq: 9
Accept-Ranges: UTC
Media-Properties: Random-Access=1.0s, Unlimited, Immutable,Scales="-1, 0.5, 0.25, 0.125,:1, 2, 4"
Date: Wed, 18 Aug 2021 07:29:25 GMT

6. The client sends an RTSP PLAY request, and the server starts to push streams for playback.

PLAY rtsp://10.14.97.40:554/Streaming/tracks/101/?starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788 RTSP/1.0


CSeq: 10
Authorization: Digest username="admin", realm="323852ae0234c718f2d4198b", nonce="55e5895b9", uri="rtsp://10.14.97.40:554/Streaming/tracks/101/?
starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788", response="4d8b7ceb301c06b40a9ae411189a909f"
User-Agent: LibVLC/3.0.3 (LIVE555 Streaming Media v2016.11.28)
Session: 225263317
Range: npt=0.000-
RTSP/1.0 200 OK
Range: clock=20210818T151815Z-20210818T151908Z
Session: 225263317
CSeq: 10
Date: Wed, 18 Aug 2021 07:29:25 GMT

7. The client sends an RTSP TEARDOWN request to stop playback.

TEARDOWN rtsp://10.14.97.40:554/Streaming/tracks/101/?starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788 RTSP/1.0


CSeq: 11
Authorization: Digest username="admin", realm="323852ae0234c718f2d4198b", nonce="55e5895b9", uri="rtsp://10.14.97.40:554/Streaming/tracks/101/?

m
starttime=20210818T151815Z&endtime=20210818T151908Z&name=00000004667000100&size=1400788", response="1d3f6f8d07d7087d341560b125445456"
User-Agent: LibVLC/3.0.3 (LIVE555 Streaming Media v2016.11.28)

co
Session: 225263317

a.
C. arc
RTSP/1.0 200 OK
CSeq: 11
Date: Wed, 18 Aug 2021 07:29:38 GMT
Session: 225263317

s, em
Connection: close

A
no fr
4.5 Event Uploading

ri on
When the rules configured on the device are triggered, the device will generate event messages (e.g., motion detection,

Ma oc
etc.) and actively upload them to the client. ISAPI supports three methods to receive event messages uploaded by the
up
device, that is, in arming mode, in listening mode, and via subscription.
co gr

4.5.1 Arming
es a@

The client establishes a HTTP persistent connection with the device to receive event messages from the device.
There are two methods (arming with subscription and arming without subscription) to receive events from the device.
Fr rc

The arming without subscription is to get all event messages from the device via HTTP GET method, while the arming
y ema

with subscription is to get messages of subscribed events via HTTP POST method.
Notes
os fr

ISAPI arming (with or without subscription) uses the HTTP/HTTPS persistent connection. Due to the simplex
channel communication mode of HTTP, after establishing the arming connection, the device will send event
ad on

messages continuously, while it's not supported for clients to send any message to the device via the connection.
el .c

When the heartbeat timed out and no message is received from the device, you should terminate the arming
connection and try establishing a new one.
ez
en

4.5.1.1 Arming without Subscription


1. Establish the connection of arming without subscription: GET /ISAPI/Event/notification/alertStream and keep
im

the connection alive via configuring Connection: keep-alive in HTTP headers on the client.
ng
Aj

2. Receive events sent by the device. The event message will be separated and parsed by boundary. For parsing
Co

details, see Event Message Parsing below.


3. Terminate the arming connection when no event message needs to be received.
Event Message Parsing:
GET /ISAPI/Event/notification/alertStream HTTP/1.1
Host: <data_gateway_ip>
Connection: Keep-Alive

HTTP/1.1 401 Unauthorized


Date: Sun, 01 Apr 2018 18:58:53 GMT
Server:
Content-Length: 178
Content-Type: text/html
Connection: keep-alive
Keep-Alive: timeout=10, max=99
WWW-Authenticate: Digest qop="auth", realm="IP Camera(C2183)", nonce="4e5468694e7a42694e7a4d364f4449354d7a6b354d54513d", stale="FALSE"

GET /ISAPI/Event/notification/alertStream HTTP/1.1

m
Authorization: Digest username="admin",realm="IP
Camera(C2183)",nonce="4e5468694e7a42694e7a4d364f4449354d7a6b354d54513d",uri="/ISAPI/Event/notification/alertStream",cnonce="3d183a245b8729121ae4ca3d41b90f18

co
",nc=00000001,qop="auth",response="f2e0728991bb031f83df557a8f185178"
Host: 10.6.165.192

a.
HTTP/1.1 200 OK
MIME-Version: 1.0

C. arc
Connection: close
Content-Type: multipart/mixed; boundary=<frontier>

--<frontier>

s, em
Content-Type: application/xml; charset="UTF-8" <!--some event messages are uploaded in JSON format, and the upper layer needs to distinguish the message
format accroding to Content-Type when parsing event messages-->

A
Content-Length: text_length

no fr
<EventNotificationAlert/>
--<frontier>

ri on
Content-Disposition: form-data; name="Picture_Name"
Content-Type: image/pjpeg

Ma oc
Content-Length: image_length

[Picture Data]
up
--<frontier>
co gr

Note: <data_gateway_ip> and <frontier> are variables, [Picture Data] indicates the raw data of a picture.
es a@

4.5.1.2 Arming with Subscription


Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj

1. Get device system capabilities: GET /ISAPI/System/capabilities .


Co

2. Check if event subscription is supported: isSupportSubscribeEvent exists and its value is true . When
isSupportSubscribeEvent does not exist or its value is false, the device does not support event subscription.

3. Get the capability of arming with subscription: GET /ISAPI/Event/notification/subscribeEventCap .


4. Establish a connection of arming with subscription: POST /ISAPI/Event/notification/subscribeEvent . You need
to set Connection: keep-alive in HTTP headers.
5. (Optional) Edit parameters of the existing subscription. You need to get the subscription parameters first: GET
/ISAPI/Event/notification/subscribeEvent/<subscribeEventID> . Then, edit the parameters based on the
existing subscription configurations: PUT /ISAPI/Event/notification/subscribeEvent/<subscribeEventID> .
6. Receive events sent by the device. The event messages will be separated and parsed by the boundary. For parsing
description, see Event Messages Parsing below.
7. (Optional) Terminate the connection of arming with subscription: PUT
/ISAPI/Event/notification/unSubscribeEvent?ID=<subscribeEventID> . When communicating with the device
via HTTP directly, there is no need to call this API. You can just terminate the connection.
Note:
Three types of data will be transmitted on the arming link: <SubscribeEventResponse/> , <EventNotificationAlert/> ,
and picture data. <SubscribeEventResponse/> is the data of first form sent by the device after arming established, see
the response parameters of URL ( POST /ISAPI/Event/notification/subscribeEvent ) for details; and
<EventNotificationAlert/> is the event content or heartbeat, you can identify the event type via field eventType , e.g.,
for heartbeat, the value of eventType is heartBeat .

m
co
Event Messages Parsing:

a.
Client Creates Arming with Subscription

C. arc
POST /ISAPI/Event/notification/subscribeEvent HTTP/1.1
Authorization: Digest username="admin",realm="IP
Camera(C2183)",nonce="4e5468694e7a42694e7a4d364f4449354d7a6b354d54513d",uri="/ISAPI/Event/notification/alertStream",cnonce="3d183a245b8729121ae4ca3d41b90f18
",nc=00000001,qop="auth",response="f2e0728991bb031f83df557a8f185178"

s, em
Host: device_ip

A
<SubscribeEvent/>

no fr
ri on
Server Responds to Request and Push Event Message

Ma oc
When the client sends a request to the device for establishing an arming connection, the device sends data in HTTP
form format (multipart/form-data). In HTTP request headers, the Content-Type is multipart/form-data,
up
boundary=AaB03x , of which the boundary is a variable used to divide the HTTP body into multiple units, and each unit
has its headers and body. For detailed format description, see RFC 1867 (Form-based File Upload in HTML). An example
co gr

is shown below. Please note two hyphens -- before and after boundary. In normal conditions, devices will not close the
es a@

arming link actively, and the end mark --AaB03x-- will not be sent on the arming link.
Fr rc

HTTP/1.1 200 OK
Content-Type: multipart/form-data; boundary=AaB03x
y ema

Connection: keep-alive
--AaB03x
Content-Disposition: form-data; name="ANPR.xml"; filename="ANPR.xml";
Content-Type: application/xml
os fr

Content-Length: 9

<ANPR/>
ad on

--AaB03x
Content-Disposition: form-data; name="licensePlatePicture.jpg"; filename="licensePlatePicture.jpg";
el .c

Content-Type: image/jpeg
Content-Length: 14
ez

Picture Data
--AaB03x--
en

The description of some keywords are as follows:


im
ng

Keyword Example Description


Aj
Co

Content- multipart/form-data; Content type. multipart/form-data means the message is in form


Type boundary=AaB03x format.
Delimiter of the form message. A form message which starts with --
boundary AaB03x
boundary and ends with --boundary-- .

Content- form-data; name=“ANPR.xml”;


Content description. form-data is a piece of form data.
Disposition filename=“ANPR.xml”;
name "ANPR.xml" Form name.
filename "ANPR.xml" File name of the form.
Content-
9 Content length, starting from the next \r\n to the next --boundary .
Length
4.5.2 Listening
After a client enables the listening service, when an event occurs, the device will send the event information actively to
the configured event receiving address. The event receiving address should be valid and configured on the device.

m
co
a.
C. arc
s, em
A
no fr
ri on
Notes: Ma oc
up
The client and event service can be the same program.
co gr

In listening mode, no heartbeat information is generated on devices.


es a@

4.5.2.1 API Calling Flow


Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c

1. Check whether the device supports configuring listening host parameters.


ez

Get the configuration capability of the listening host: GET /ISAPI/Event/notification/httpHosts/capabilities .


If the node <HttpHostNotificationCap> is returned and its value is true, it indicates that the device supports
en

configuring listening host parameters.


im

2. Configure parameters of the listening host.


ng
Aj

Configure parameters of all listening hosts: PUT /ISAPI/Event/notification/httpHosts?security=


Co

<security>&iv=<iv> ;

Get parameters of all listening hosts: GET /ISAPI/Event/notification/httpHosts?security=<security>&iv=


<iv> ;

Configure parameters of a listening host: PUT /ISAPI/Event/notification/httpHosts/<hostID>?security=


<security>&iv=<iv> ;

Get parameters of a listening host: GET /ISAPI/Event/notification/httpHosts/<hostID>?security=


<security>&iv=<iv> .

3. Enable the listening service.


You need to enable the listening service of the listening host.
4. (Optional) Test the listening service.
4. (Optional) Test the listening service.
The platform applies the command to the device to test whether the listening host is available for the device: POST
/ISAPI/Event/notification/httpHosts/<hostID>/test .

5. The listening host receives event information from the device.


When an event occurs, the device creates an connection with the client and uploads alarm information actively.
Meanwhile, the listening host receives data from the device. See details in Event Messages.
Note: You can also configure the listening parameters such as the time out via URL

m
/ISAPI/Event/notification/httpHosts/<hostID>/uploadCtrl .

co
4.5.2.2 Event Messages

a.
When an event occurs or an alarm is triggered in listening mode, the event/alarm information can be uploaded with

C. arc
binary data (such as pictures) and without binary data.
1. Without Binary Data:

s, em
The Content-Type in headers of the HTTP request sent by the device is usually application/xml or application/json

A
no fr
as follows:

ri on
Alarm Message Sent by the Device

Ma oc
POST Request_URI HTTP/1.1 <!--Request_URI, related URI: POST /ISAPI/Event/notification/httpHosts-->
Host: data_gateway_ip:port <!--HTTP server's domain name / IP address and port No., related URI: POST /ISAPI/Event/notification/httpHosts-->
up
Accept-Language: en-us
Date: YourDate
Content-Type: application/xml; <!--Content Type, which is used for the upper layer to distinguish different formats when parsing the message-->
co gr

Content-Length: text_length
Connection: keep-alive <!--maintain the connection between the device and the server for better transmission performance-->
es a@

<EventNotificationAlert/>
Fr rc

Response by the Listening Host


y ema

HTTP/1.1 200 OK
Date: YourDate
os fr

Connection: close
ad on

2. With Binary Data:


el .c

The format of the data sent by the device is HTTP form (multipart/form-data). The Content-Type in headers of the HTTP
request is usually multipart/form-data, boundary=<frontier> , of which boundary is a variable used to divide the
ez

HTTP body into multiple units, and each unit has its headers and body. See details in RFC 1867 (Form-based File
en

Upload in HTML). An example is shown below. Please note two hyphens -- before and after the boundary.
Alarm Message Sent by the Device
im
ng
Aj

POST Request_URI HTTP/1.1 <!--Request_URI, , related URI: POST /ISAPI/Event/notification/httpHosts-->


Host: device_ip:port <!--HTTP server's domain name / IP address and port No., related URI: POST /ISAPI/Event/notification/httpHosts-->
Co

Accept-Language: en-us
Date: YourDate
Content-Type: multipart/form-data;boundary=<frontier>
Content-Length: text_length
Connection: keep-alive <!--maintain the connection between the device and the server for better transmission performance-->

--<frontier>
Content-Disposition: form-data; name="Event_Type"
Content-Type: text/xml <!--some event messages are uploaded in JSON format, and the upper layer needs to distinguish the message format accroding to
Content-Type when parsing event messages-->

<EventNotificationAlert/>
--<frontier>
Content-Disposition: form-data; name="Picture_Name"
Content-Length: image_length
Content-Type: image/jpeg

[Picture Data]
--<frontier>--

Response by the Listening Host


HTTP/1.1 200 OK
Date: YourDate
Connection: close

The description of some keywords are as follows:


Keyword Example Description
Content- multipart/form-data;
Content type, multipart/form-data refers to data in form format.
Type boundary=frontier

m
Delimiter of the form message. A form message which starts with --

co
boundary frontier
boundary and ends with --boundary-- .

a.
Content- form-data;
Content description. form-data is a piece of form data.

C. arc
Disposition name="Picture_Name";
filename "Picture_Name" File name. The file refers to the form message.

s, em
A
Content-

no fr
10 Content length, starting from the next \r\n to the next --boundary .
Length

ri on
4.5.2.3 Exception Handling
Error Codes
Ma oc
up
statusCode statusString subStatusCode errorCode Description
co gr

6 Invalid Content eventNotSupport 0x60001024


es a@

5 Device Management (General)


Fr rc

s
y ema

5.1 . Search for Structured Logs


os fr

5.1.1 Introduction to the Function


ad on

The device will generate many logs during running. A type of logs are stored in the device database by structured data,
including:
el .c

Operation records of the device, such as startup, reboot, PTZ control, etc.
ez

Events generated by the device, such as the start of motion detection, the end of motion detection, face capture, etc.
en

Device status exception, such as network disconnection, network recovery, IP address conflict, etc.
Device triggering information, such as start recording, stop recording, and record HDD status information
im

regularly.
ng
Aj

Structured log search contains log search and security log search. The two methods share some features, and have
Co

differences:
Log search is used for searching for running status and operation records of the device.
Security log search is used for searching for the security-related status and operation records of the device, such as
user login/logout records, device SSH service enabling/shutdown records, etc.
Structured logs can be displayed on the device web page, remote client, and platform/software by structure tabs.

5.1.2 API Calling Flow


1. Search for log information: POST /ISAPI/ContentMgmt/logSearch .
2. Search for security logs: POST /ISAPI/ContentMgmt/security/logSearch .
5.2 . Upload Log to Syslog Server
5.2.1 Introduction to the Function
Syslog is a standard log transmission protocol that is widely applied to system logs, which is defined in RFC 5424 (The
Syslog Protocol). After configuring the device's Syslog service address and enabling the Syslog function, the device will
send the logs running in Syslog protocol to the Syslog server. Syslog server can manage logs of a large number of
devices in this way.

5.2.2 API Calling Flow

m
co
1. Get the capability of accessing syslog parameters, and check whether the device supports syslog function and set
the value range of parameters.

a.
2. Set log server parameters: PUT /ISAPI/System/logServer ; edit the device log server configuration, including IP

C. arc
address, port No., certificate, etc.;
3. Device logs will be sent to Syslog server through Syslog protocol. You can view device logs in Syslog server.

s, em
5.3 Arming and Subscription

A
no fr
5.3.1 Introduction to the Function

ri on
With arming and subscription, the client can establish HTTP persistent connection with the device, and continuously
receive the event messages from the device.
Ma oc
For ISAPI event arming, the client can receive all types of events by GET method, or receive the subscribed events only
up
by POST method.
co gr

5.3.2 API Calling Flow


es a@

5.3.2.1 Without Subscription


Fr rc

1. Establish a connection for arming: GET /ISAPI/Event/notification/alertStream . You need to set Connection:
y ema

keep-alive in HTTP Headers.


2. When receiving events sent by the device, the event messages can be separated and parsed by boundary. See
os fr

“Parsing Event Messages” below for details.


3. Disable the arming connection when you do not need to receive event messages.
ad on

5.3.2.2 Subscription
el .c

5.3.2.2.1 API Calling Flow


ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj

1. Get device system capabilities: GET /ISAPI/System/capabilities .


Co

2. Check if event subscription is supported: isSupportSubscribeEvent exists and its value is true . When
isSupportSubscribeEvent does not exist or its value is false, the device does not support event subscription.

3. Get the capability of arming with subscription: GET /ISAPI/Event/notification/subscribeEventCap .


4. Establish a connection of arming with subscription: POST /ISAPI/Event/notification/subscribeEvent . You need
to set Connection: keep-alive in HTTP Headers.
5. (Optional) Edit parameters of the existing subscription. You need to get the subscription parameters first: GET
/ISAPI/Event/notification/subscribeEvent/<subscribeEventID> . Then, edit the parameters based on the
existing subscription configurations: PUT /ISAPI/Event/notification/subscribeEvent/<subscribeEventID> .
6. Receive events sent by the device. The event messages will be separated and parsed by boundary. For parsing
description, see Event Messages Parsing below.
7. (Optional) Terminate the connection of arming with subscription: PUT
/ISAPI/Event/notification/unSubscribeEvent?ID=<subscribeEventID> . When communicating with the device
via HTTP directly, there is no need to call this API. You can just terminate the connection.
Note:
Three types of data will be transmitted on the arming link: <SubscribeEventResponse/> , <EventNotificationAlert/> ,
and picture data. <SubscribeEventResponse/> is the data of first form sent by the device after arming established, see
the response parameters of URL ( POST /ISAPI/Event/notification/subscribeEvent ) for details; and
<EventNotificationAlert/> is the event content or heartbeat, you can identify the event type via field eventType , e.g.,
for heartbeat, the value of eventType is heartBeat .

m
co
5.3.2.2.2 Example

a.
POST /ISAPI/Event/notification/subscribeEvent HTTP/1.1

C. arc
Host: device_ip
Accept-Language: zh-cn
Date: YourDate
Content-Type: application/xml;

s, em
Content-Length: text_length
Connection: Keep-Alive

A
no fr
<SubscribeEvent/>
HTTP/1.1 401 Unauthorized

ri on
Date: Sun, 01 Apr 2018 18:58:53 GMT
Server:
Content-Length: 178

Ma oc
Content-Type: text/html
Connection: keep-alive
Keep-Alive: timeout=10, max=99
up
WWW-Authenticate: Digest qop="auth", realm="IP Camera(C2183)", nonce="4e5468694e7a42694e7a4d364f4449354d7a6b354d54513d", stale="FALSE"

POST /ISAPI/Event/notification/subscribeEvent HTTP/1.1


co gr

Authorization: Digest username="admin",realm="IP


Camera(C2183)",nonce="4e5468694e7a42694e7a4d364f4449354d7a6b354d54513d",uri="/ISAPI/Event/notification/alertStream",cnonce="3d183a245b8729121ae4ca3d41b90f18
es a@

",nc=00000001,qop="auth",response="f2e0728991bb031f83df557a8f185178"
Host: device_ip
Fr rc

<SubscribeEvent/>
HTTP/1.1 200 OK
MIME-Version: 1.0
y ema

Connection: close
Content-Type: multipart/mixed; boundary=<frontier>

--<frontier>
os fr

Content-Type: application/xml; charset="UTF-8" <!--some event messages are uploaded in JSON format, and the upper layer needs to distinguish the message
format accroding to Content-Type when parsing event messages-->
ad on

Content-Length: text_length

<SubscribeEventResponse/>
el .c

--<frontier>
Content-Type: application/xml; charset="UTF-8" <!--some event messages are uploaded in JSON format, and the upper layer needs to distinguish the message
format accroding to Content-Type when parsing event messages-->
ez

Content-Length: text_length
en

<EventNotificationAlert/>
--<frontier>
Content-Disposition: form-data; name="Picture_Name"
im

Content-Type: image/pjpeg
Content-Length: image_length
ng
Aj

[Picture Data]
--<frontier>
Co

5.3.2.3 Event Messages Parsing


After the arming connection with the device is established, the data sent by the device is in HTTP form format
(multipart/form-data). In an HTTP request, Content-Type in Headers is usually multipart/form-data,
boundary=AaB03x , and boundary is a variable used to divide HTTP Body into multiple units, each being a set of data and
has its own Headers and Body. For detailed format description, see RFC 1867 (Form-based File Upload in HTML). An
example is shown below. Note the dash -- before and after boundary.
HTTP/1.1 200 OK
Content-Type: multipart/form-data; boundary=AaB03x
Connection: keep-alive
--AaB03x
Content-Disposition: form-data; name="ANPR.xml"; filename="ANPR.xml";
Content-Type: application/xml
Content-Length: 9

<ANPR/>
--AaB03x
Content-Disposition: form-data; name="licensePlatePicture.jpg"; filename="licensePlatePicture.jpg";
Content-Type: image/jpeg
Content-Length: 14

m
Image Data
--AaB03x--

co
a.
The description of some keywords are as follows:

C. arc
Keyword Example Description
Content- multipart/form-data; Content type. multipart/form-data means the message is in form

s, em
Type boundary=AaB03x format.

A
no fr
Delimiter of the form message. --boundary is the start of a form. --
boundary AaB03x
boundary-- is the end of the whole HTTP form message.

ri on
Content- form-data; name="ANPR.xml";

Ma oc
Content description.
Disposition filename="ANPR.xml";
up
name "ANPR.xml" Form name.
co gr

filename "ANPR.xml" File name of the form.


es a@

Content-
9 Content length, starting from the next \r\n to the next --boundary.
Fr rc

Length
s
y ema

5.3.3 Restriction Description


Note that ISAPI arming (with or without subscription) uses HTTP/HTTPS persistent connection. Due to the simplex
os fr

channel communication mode of HTTP, after establishing the arming connection, the device will send out event
ad on

messages continuously, while you cannot send any message to the device via the connection.
After the heartbeat time, if you do not receive any message from the device, you should disable the arming connection
el .c

and try establishing a new one.


ez

5.3.4 Sample Messages


en

5.3.4.1 Establish Arming Subscription


im
ng
Aj

POST /ISAPI/Event/notification/subscribeEvent HTTP/1.1


Authorization: Digest username="admin",realm="IP
Co

Camera(C2183)",nonce="4e5468694e7a42694e7a4d364f4449354d7a6b354d54513d",uri="/ISAPI/Event/notification/alertStream",cnonce="3d183a245b8729121ae4ca3d41b90f18
",nc=00000001,qop="auth",response="f2e0728991bb031f83df557a8f185178"
Host: device_ip

<SubscribeEvent/>

5.3.4.2 The Device Responses and Uploads an Event Message


HTTP/1.1 200 OK
MIME-Version: 1.0
Connection: close
Content-Type: multipart/mixed; boundary=<frontier>

--<frontier>
Content-Type: application/xml; charset="UTF-8" <!--Some alarm messages are in JSON format, so when parsing messages, the upper-layer should distinguish
them according to the Content-Type field.-->
Content-Length: text_length

<SubscribeEventResponse/>
--<frontier>
Content-Type: application/xml; charset="UTF-8" <!--Some alarm messages are in JSON format, so when parsing messages, the upper-layer should distinguish
them according to the Content-Type field.-->

m
Content-Length: text_length

co
<EventNotificationAlert version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<ipAddress>10.17.133.46</ipAddress>

a.
<portNo>80</portNo>
<protocol>HTTP</protocol>
<macAddress>44:19:b6:6d:24:85</macAddress>

C. arc
<channelID>1</channelID>
<dateTime>2017-05-04T11:20:02+08:00</dateTime>
<activePostCount>0</activePostCount>
<eventType>heartBeat</eventType>

s, em
<eventState>active</eventState>
<eventDescription>heartBeat</eventDescription>

A
</EventNotificationAlert>

no fr
--<frontier>
Content-Disposition: form-data; name="Picture_Name"
Content-Type: image/pjpeg

ri on
Content-Length: image_length
Content-ID: image_ID

[Picture Data]
--<frontier>
Ma oc
up
co gr

5.4 Device Hardware Asset Management


es a@

5.4.1 Introduction to the Function


Fr rc

Hardware assets: the host assets (CPU, memory, and HDD) and peripheral assets (hardware connected to the host
y ema

including camera, sensor, and USB flash drive).


Typical application: financial industry, where the head office needs to regularly count the security device assets of each
os fr

branch to collect the number, operation status, and other basic information of deployed host/storage/peripheral
cameras.
ad on

Extended application: management of industry-related service applications for assets customized by the industry
platform (e.g., information and software assets, person assets, and service assets) based on the hardware asset
el .c

integration.
ez

5.4.2 API Calling Flow


en

1. Get the search capability of the device hardware asset data via GET /ISAPI/System/deviceInfo/capabilities : when
im

isSupportSearchHardwareAssets is true, it indicates the device supports searching for asset data.
ng

2. Search for device hardware asset data via GET /ISAPI/System/deviceInfo/ExportDeviceAssets?format=json to get
Aj

the information of hardware assets on device including host assets, connected sub-device assets, HDD assets, etc.
Co

3. Export the device hardware asset information in binary data in Excel format.

5.5 Device Peripherals Upgrade


5.5.1 Introduction to the Function
The platform or client software or web client under the LAN upgrades device peripherals via ISAPI.

5.5.2 API Calling Flow


The sequence diagram of upgrading device peripherals by the platform is shown below.
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@

1. Get the device system capability GET /ISAPI/System/capabilities and check whether the device supports
Fr rc

upgrading peripherals. If the field isSupportAcsUpdate is returned and its value is true, it indicates that the device
supports this function, otherwise, the device does not support this function.
y ema

2. Get the capability of upgrading the peripherals module GET /ISAPI/System/AcsUpdate/capabilities , and get the
types and IDs of peripherals that support upgrading.
os fr

3. The platform sends the upgrade command POST /ISAPI/System/updateFirmware?type=<type>&moduleAddress=


ad on

<moduleAddress>&id=<indexID> . In the URL type refers to the peripheral type, moduleAddress refers to the
peripheral module address, and indexID refers to the ID of peripheral to be upgraded. The platform will apply the
el .c

upgrade peripheral package to the device.


ez

4. Get the peripheral upgrade progress GET /ISAPI/System/upgradeStatus?type=<Type> .


5. Log in to the device again.
en

6. Get the peripheral latest version information.


im

5.6 Device Time Sync


ng
Aj

5.6.1 Introduction to the Function


Co

Time sync is a method to synchronize the time of all devices connecting to the NTP server, so that all devices can share the same clock time for
providing related functions based on time. Supported time sync types: NTP time sync, manual sync, satellite time sync, platform time synchronization,
GB28181 time sync, etc. The following describes the method of NTP time sync.

5.6.1.1 NTP Time Sync


The local system of running NTP can receive sync from other clock sources (self as client), other clocks can sync from
the local system (self as server), and sync with other devices.
The basic working principle of NTP is shown in the picture. Device A and Device B are connected via the network, and
their systems follow their own independent system time. To auto sync their time, you can set device time auto sync via
NTP. For example:
Before time sync between Device A and Device B, the time of Device A is 10:00:00 am, and that of Device B is 11:00:00 am. Device B is set as the server of
NTP server, so that the time of Device A should be synchronized with that of Device B. The time of NTP message transmitted between Device A and Device B is
1 second.

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
The working process of system clock synchronization is as follows:
Device A sends an NTP message to Device B with a timestamp of 10:00:00 am (T1) that is when it leaves Device A.
co gr

When the NTP message reaches Device B. Device B will add its own timestamp, which is 11:00:01 am (T2).
es a@

Then the NTP message leaves Device B with Device B's timestamp, which is 11:00:02 am (T3).
Fr rc

Device A receives the response message, and the local time of Device A is 10:00:03 am (T4).
y ema

Above all, Device A can calculate two important parameters:


Round-trip delay of NTP message: Delay = (T4-T1) - (T3-T2) = 2 seconds.
os fr

Time difference between Device A and Device B: offset = ((T2-T1)+(T3-T4))/2=1 h.


Device A can sync its own time with that of Device B according to calculation results.
ad on
el .c

5.6.2 API Calling Flow


ez

5.6.2.1 Time Sync Configuration


en

1. Get the Capability of Device Time synchronization Management


You can call this API to get the time sync types currently supported by the device, such as NTP time sync, manual time
im

sync, satellite time sync, Connect platform time sync, and GB28181 time sync.
ng
Aj

Get the capability: GET /ISAPI/System/time/capabilities .


Co

2. Set device time synchronization management parameters


You can configure the time synchronization mode as follows.
NTP time synchronization: See 4.2.2 NTP Time Sync (Client).
Manual time synchronization: Set the value of timeMode to manual , and set the device local time in nodes localTime、
timeZone .
Satellite time synchronization: Set the value of timeMode to satellite , and set the device local time in nodes
satelliteInterval .
Platform time synchronization: Set the value of timeMode to platform .
GB28181 time synchronization: Set the value of timeMode to GB28181 . If there are two GB28181 platforms, you can
select platform No. via platformNo . it is the only ID, which is configured via platformNo in GB28181List , related URI:
/ISAPI/System/Network/SIP/<SIPServerID>
Get device time synchronization management parameters: GET /ISAPI/System/time ; Set device time synchronization
management parameters: PUT /ISAPI/System/time .

5.6.2.2 NTP Time Sync (Client)


The local system running the NTP server can receive sync information from other clock sources (self as client), sync
other clocks (self as server) as clock sources, and sync with other devices. Calling flow (self as client):

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Check whether the device supports synchronizing time via NTP server Get the capability of the device: GET
/ISAPI/System/time/capabilities ; and check whether timeMode supports NTP .
2. Set access parameters of the NTP server
Supports accessing the NTP server by IP address to synchronize the device time.
Get the access parameter capability of the NTP server: GET /ISAPI/System/time/ntpServers/capabilities
Set access parameters of the NTP server: PUT /ISAPI/System/time/ntpServers
Get access parameters of the NTP server: GET /ISAPI/System/time/ntpServers
3. Set the time mode of the device to NTP
Supports setting the value of timeMode to NTP .
Get device time synchronization management parameters: GET /ISAPI/System/time Set device time synchronization
management parameters: PUT /ISAPI/System/time

m
5.6.2.2 NTP Time Sync (Server Mode)

co
The local system running the NTP server can receive sync information from other clock sources (self as client), sync

a.
other clocks (self as server) as clock sources, and sync with other devices. Calling flow (self as server):

C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Check whether the device supports configuring NTP service Get the capability of device time synchronization
management: GET /ISAPI/System/time/capabilities ; If isSupportNtp is returned, it indicates that the device
supports time synchronization management.
2. Set NTP server to the server mode
Supports setting the value of mode to server .
Get the capability of server mode: GET /ISAPI/System/time/ntp/capabilities?format=json
Set NTP to server mode: PUT /ISAPI/System/time/ntp?format=json
Get parameters of NTP server mode: GET /ISAPI/System/time/ntp?format=json
3. Set the parameters of NTP server
Supports setting the IP address of the NTP server.
Get the capability of NTP server: GET /ISAPI/System/time/NTPService/capabilitis?format=json

m
co
Set the NTP server parameters: PUT /ISAPI/System/time/NTPService?format=json

a.
Get the parameters of the NTP server: GET /ISAPI/System/time/NTPService?format=json
4. Synchronize the device’s NTP service information with other devices

C. arc
Supports synchronizing the time information to the camera.
Get the capability set of synchronizing device’s NTP service information with the camera: GET

s, em
/ISAPI/System/time/SyncDeviceNTPInfoToCamera/capabilities?format=json

A
no fr
Synchronize device’s NTP service information with the camera: PUT

ri on
/ISAPI/System/time/SyncDeviceNTPInfoToCamera?format=json
Get the progress of synchronizing device’s NTP service information with the camera: GET

Ma oc
/ISAPI/System/time/SyncDeviceNTPInfoToCamera/Progress?format=json
up
Search for the results of synchronizing device’s NTP service information with the camera: POST
/ISAPI/System/time/SyncDeviceNTPInfoToCamera/SearchResult?format=json
co gr
es a@

5.7 Device Upgrade


Fr rc

5.7.1 Introduction to the Function


y ema

The platform or client software or web client under the LAN upgrades devices via ISAPI.

5.7.2 API Calling Flow


os fr

The sequence diagram of upgrading devices by the platform is shown below.


ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on

1. Upgrade devices.
el .c

Upgrade the device firmware: POST /ISAPI/System/updateFirmware .


ez

2. Get the device upgrade progress.


en

Get the device upgrade progress: GET /ISAPI/System/upgradeStatus .


im

3. Reboot devices.
ng
Aj

Reboot devices: PUT /ISAPI/System/reboot .


Co

5.8 Export Log File


5.8.1 Introduction to the Function
After device fault, you will need to export the detailed running logs of devices to locate the fault and find the cause. Log
files can be exported to the client via network, and to external storage media (USB, mobile HDD, etc.) via the USB
interface.

5.8.2 API Calling Flow


5.8.2.1 Export to Client
1. Export device log files: POST /ISAPI/ContentMgmt/logSearch/dataPackage ; The device will package the stored log
files.
2. Download log files via the URL returned by the device.

5.8.2.2 Export to USB Storage Media


1. Get the capability of exporting log files to USB storage media parameters: GET
/ISAPI/System/exportLogToUSB/capabilities?format=json ; check whether the device supports exporting log
files to USB storage media;
2. Set parameters of exporting log files to USB: PUT /ISAPI/System/exportLogToUSB/mode?format=json ;
3. Get the status of exporting log files to USB: GET /ISAPI/System/exportLogToUSB/status?format=json .

m
5.9 I/O Input

co
a.
5.9.1 Introduction to the Function

C. arc
Configure I/O input parameters of I/O input ports.

5.9.2 API Calling Flow

s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez

1. Check whether the device supports I/O input configuration:


en

Get device system capabilities: GET /ISAPI/System/capabilities . If the node <IOCap> and sub node
im

<IOInputPortNums> are returned in the response message, the device supports I/O input configuration.
ng
Aj

2. Set I/O input parameters:


Co

Get the input configuration capabilities: GET /ISAPI/System/IO/inputs/capabilities


Set all input parameters: PUT /ISAPI/System/IO/inputs
Get all input parameters: GET /ISAPI/System/IO/inputs
Set parameters of a single input port: PUT /ISAPI/System/IO/inputs/<IOInputID>
Get parameters of a single input port: GET /ISAPI/System/IO/inputs/<IOInputID>
Note: There are two types of input ID <IOInputID> :
Device local I/O: The input ID is the alarm input ID, starting from 1.
I/O of the camera with digital channels: The input ID is the value of input channel No. × 100 + the alarm input
port ID. For example, for digital channel 2 with alarm input port 3, the input ID is 203.
3. Set I/O signal linkage parameters:
Set alarm input event linkage parameters: PUT /ISAPI/Event/triggers/IO-<channelID>
Get alarm input event linkage parameters: GET /ISAPI/Event/triggers/IO-<channelID>
Delete alarm input event linkage parameters: DELETE /ISAPI/Event/triggers/IO-<channelID>

m
4. Set I/O signal arming schedule:

co
Set the arming schedule of alarm inputs for all channels: PUT /ISAPI/Event/schedules/inputs

a.
Get the arming schedule of alarm inputs for all channels: GET /ISAPI/Event/schedules/inputs

C. arc
Set the arming schedule of alarm inputs for a specified channel: PUT

s, em
/ISAPI/Event/schedules/inputs/<alarmInID>

A
no fr
Get the arming schedule of alarm inputs for a specified channel: GET
/ISAPI/Event/schedules/inputs/<alarmInID>

ri on
5. Receive I/O alarm: When I/O input alarm is triggered within the arming schedule, the linked terminal will

Ma oc
response and the device will upload the alarm. The eventType is IO , and inputIOPortID or dynInputIOPortID is
up
valid.
co gr

5.10 Interactive Tools Upgrade Deployment Based on Localization


es a@

5.10.1 Introduction to the Function


Fr rc

This solution applies to the upgrade of devices and sub-devices connected via ISAPI. If the device is connected via ISAPI
y ema

protocols, it is required to set up HTTP(s) service to store device upgrade package and generate URL for downloading
upgrade package. If the device is connected via HCNetSDK, you can implement the device upgrade via transmitting
os fr

ISAPI.
ad on

5.10.2 API Calling Flow


el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Search for the device firmware ID: GET /ISAPI/System/firmwareCodeV2 .


2. Search for the device upgrade information by firmware ID on the SWMS/EZ Cloud, download upgrade package to
local storage, and apply the upgrade task to the device: POST /ISAPI/System/onlineUpgrade/task?format=json .
You can specify to upgrade device (e.g., NVR) or sub-device (e.g., camera) via the node <channel> .
3. During the upgrade, you can get the real-time upgrade progress: GET /ISAPI/System/onlineUpgrade/status .
4. After upgrade is completed, the device will upload the "onlineUpgradeStatus" (upgrade status), and reboot
automatically.
5. After the device rebooting, you can get the latest device version information.
Get the device (e.g., NVR) version information: GET /ISAPI/System/deviceInfo .
Get the sub-device (e.g., IPC) version information: GET /ISAPI/ContentMgmt/InputProxy/channels?security=
<security>&iv=<iv> .

5.11 Management of Devices Access Serial Port


5.11.1 Introduction to the Function
Information management of device accessed the serial are as follows: 1. Configure manufacturer, type, and model
information of the specific serial port access device. 2. Search for the device type or model supported by the specific
serial port.

m
5.11.2 API Calling Flow

co
1. Check whether the device supports information management of devices access the serial port: GET

a.
/ISAPI/System/Serial/capabilities ; If <isSupportDeviceInfo> is returned, it indicates that the device supports
information configuration of devices access the serial port.

C. arc
3. Set the information of devices access the serial port:

s, em
Get the capability of device information parameters of a single serial port: GET

A
/ISAPI/System/Serial/ports/<portID>/deviceInfo?format=json ;

no fr
Get device information parameters access single serial port: GET /ISAPI/System/Serial/ports/<portID>/deviceInfo?

ri on
format=json ;
Set device information parameter of single serial port: PUT /ISAPI/System/Serial/ports/<portID>/deviceInfo?
format=json ;
Ma oc
up
4. Check whether the device supports linking information of devices access the serial port: GET
/ISAPI/System/Serial/capabilities ; If <isSupportSearchDeviceInfoRelations> is returned, it indicates that the
co gr

device supports searching for linked information od devices access the serial port.
es a@

5. Search for linked information of devices access the serial port:


Fr rc

Get the capability of searching for linked parameters of information of devices access a single serial port: GET
/ISAPI/System/Serial/ports/<portID>/searchDeviceInfoRelations/capabilities?format=json ;
y ema

Search for linked parameters of information of devices access a single serial port:POST
/ISAPI/System/Serial/ports/<portID>/searchDeviceInfoRelations?format=json ;
os fr

5.12 Mutually Exclusive Functions


ad on
el .c

5.12.1 Introduction to the Function


ez

Some functions are mutually exclusive due to the device performance (for example, function A and function B cannot
run at the same time, and only one of them is allowed at one time).
en

5.12.2 API Calling Flow


im
ng

The following three APIs are available for getting the mutually exclusive function information:
Aj
Co

1. Get the information of mutually exclusive functions: GET /ISAPI/System/mutexFunction/capabilities?


format=json . You can call this URL to get the list of existing mutually exclusive functions supported by the device.
Note: NVR devices only support setting exlusive function "perimeter" (perimeter protection), and do not support
"linedetection" (line crossing detection), "fielddetection" (intrusion detection), "regionEntrance" (region entrance),
and "regionExiting" (region exiting).
2. Search for the functions that are mutually exclusive with a specified function: POST
/ISAPI/System/mutexFunction?format=json . Based on the list of mutually exclusive functions returned by GET
/ISAPI/System/mutexFunction/capabilities?format=json , you can search for the mutual exclusion status of a
specified function.
3. Get the mutual exclusion information when device function exception occurs: GET
/ISAPI/System/mutexFunctionErrorMsg . After getting the error code, you can call this API to get the current
mutually exclusive functions.
5.13 Platform Upgrade Deployment Based on EZ 2.0
5.13.1 Introduction to the Function
Considering that the device is connected to EZ via EZ 2.0 Protocol, EZ OTA upgrade solution is not supported. This
solution applies to specified version upgrade.

5.13.2 API Calling Flow

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Search for the device firmware ID: GET /ISAPI/System/firmwareCodeV2 .


2. Search for the device upgrade information by its firmware ID. If there is an available new version, apply the
upgrade task to the device: POST /ISAPI/System/onlineUpgrade/task?format=json . You can specify to upgrade
device (e.g., NVR) or sub-device (e.g., IPC) via the node <channel> .
device (e.g., NVR) or sub-device (e.g., IPC) via the node <channel> .
3. During the device upgrade, you can get the real-time upgrade progress on the platform: GET
/ISAPI/System/onlineUpgrade/status .

4. After the device upgrade is finished, the device will upload the "onlineUpgradeStatus" and reboot automatically.
5. After both upgrade and reboot are finished, you can get the latest device version information on the platform.
Get the device (e.g., NVR) version information: GET /ISAPI/System/deviceInfo .
Get the sub-device (e.g., IPC) version information: GET /ISAPI/ContentMgmt/InputProxy/channels?security=

m
<security>&iv=<iv> .

co
5.14 Platform Upgrade Deployment Based on Localization

a.
C. arc
5.14.1 Introduction to the Function
This solution applies to the upgrade of devices and sub-devices connected via ISAPI and ISUP. If via ISAPI, it is required

s, em
to set up HTTP(s) service or transfer binary upgrade package files so as to store device upgrade package and generate

A
URL for downloading upgrade package. If via ISUP, it is required to set up FTP service to store device upgrade package

no fr
and generate URL for downloading upgrade package. If the device is connected via HCNetSDK protocols, you can

ri on
realize device upgrade via transmitting ISAPI.

5.14.2 API Calling Flow


Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr

1. Search for device firmware ID on the platform: GET /ISAPI/System/firmwareCodeV2 .


ad on

2. Search for the device upgrade information in DAC by device firmware ID on the platform. If there is an available
el .c

new version, DAC will trigger an upgrade task and apply it to the device: POST
/ISAPI/System/onlineUpgrade/task?format=json . You can specify to upgrade device (e.g., NVR) or sub-device
ez

(e.g., IPC) via the node <channel> .


en

3. During the upgrade, you can get the real-time upgrade progress on the platform: GET
im

/ISAPI/System/onlineUpgrade/status .
ng
Aj

4. After the device upgrade is finished, the device will upload the "onlineUpgradeStatus" (upgrade status), and will
Co

reboot automatically.
5. After the upgrade and reboot are finished, you can get the latest device version information on the platform.
Get the device (e.g., NVR) version information: GET /ISAPI/System/deviceInfo .
Get the sub-device (e.g., IPC) version information: GET /ISAPI/ContentMgmt/InputProxy/channels?security=
<security>&iv=<iv> .

5.15 Remote Online Upgrade Based on the WEB Client


5.15.1 Introduction to the Function
This solution applies to remote online upgrade of the devices and sub-devices connected to WEB client.

5.15.2 API Calling Flow


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Get device online upgrade capability: GET /ISAPI/System/onlineUpgrade/capabilities .


2. Manually trigger the device online upgrade inspection: POST /ISAPI/System/onlineUpgrade/PatrolInspection?
format=json . After it is enabled, the device will search for the available new version.

3. During the inspection, the WEB client can get the real-time inspection progress: GET
/ISAPI/System/onlineUpgrade/PatrolInspection/Status?format=json .

4. After the device inspection is finished, search for the device and sub-device upgrade information: GET
/ISAPI/System/onlineUpgrade/SearchDevInfo?format=json .

5. Apply the upgrade task: PUT /ISAPI/System/onlineUpgrade/upgrade?type=<type>&id=<indexID>&channelID =


<channelID> . You can upgrade a specified device via the node <channelID> in the URL. Specify sub-device
upgrade by configuring <type> .
6. You can search for online upgrade status during the upgrade: GET /ISAPI/System/onlineUpgrade/SearchStatus?
format=json .

7. You can cancel the upgrade during the upgrade: PUT /ISAPI/System/onlineUpgrade/CancelUpgrade?
format=json .

8. After the upgrade and reboot are finished, you can get the latest device version information.
Get the device (e.g., NVR) version information: GET /ISAPI/System/deviceInfo .
Get the sub-device (e.g., IPC) version information: GET /ISAPI/ContentMgmt/InputProxy/channels?security=

m
<security>&iv=<iv> .

co
5.16 Serial Port Data Transparent Transmission

a.
C. arc
5.16.1 Introduction to the Function
RS485, RS422 and RS232 serial ports external to the device are used as transparent channels to transmit serial port

s, em
data.

A
no fr
5.16.2 API Calling Flow

ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en

1. Check whether the device supports serial port data transmission:


im

Get the capability of the device serial port: GET /ISAPI/System/capabilities . If SerialCap is returned and the value is
ng

true, it indicates that the device supports the functions of the serial port.
Aj

2. Set parameters of the transmission channel list:


Co

Get parameters of the specific transmission channel: GET


/ISAPI/System/Serial/ports/<portID>/Transparent/channels/<channelID> ;
Configure parameters of the specific transmission channel: GET
/ISAPI/System/Serial/ports/<portID>/Transparent/channels/<channelID> .
3. Open the transmission channel: PUT
/ISAPI/System/Serial/ports/<portID>/Transparent/channels/<channelID>/open ;
4. Transmit serial port data via transparent channel:
Receive data uploaded by device serial port through transmission channel: GET
/ISAPI/System/Serial/ports/<portID>/Transparent/channels/<channelID>/transData ;
Send data to device serial port through transmission channel: PUT
/ISAPI/System/Serial/ports/<portID>/Transparent/channels/<channelID>/transData ;
5. Close the transmission channel: PUT
/ISAPI/System/Serial/ports/<portID>/Transparent/channels/<channelID>/close ;

5.17 Serial Port Parameter Configuration


5.17.1 Introduction to the Function
Serial port parameter configuration.

5.17.2 API Calling Flow

m
co
1. Check whether the device supports configuring parameters of the serial port:
Get the capability of device serial port: GET /ISAPI/System/capabilities;如果报文返回节点 . If is returned and its value

a.
is true, it indicates that the device supports functions of serial port.

C. arc
3. Get parameters of all serial ports:
Get the capability of all serial ports: GET /ISAPI/System/Serial/capabilities ;

s, em
Get control parameters of all serial ports: GET /ISAPI/System/Serial/ports?permissionController=<indexID> ;

A
no fr
4. Set control parameters of single serial port:
Get control parameters of single serial port: GET /ISAPI/System/Serial/ports/<portID>?permissionController=

ri on
<indexID> ;

Ma oc
Configure control parameters of single serial port: PUT /ISAPI/System/Serial/ports/<portID>?
up
permissionController=<indexID> ;
5. Get the status of single serial port:GET /ISAPI/System/Serial/ports/<portID>/status
co gr
es a@

5.18 User Management


Fr rc

5.18.1 Introduction to the Function


y ema

When the device is activated, you can log in to it via the admin account and corresponding password, and manage users
as needed, including:
os fr

1. Change the password of the admin account. The user name cannot be edited.
2. Add, edit, and delete other users, including the user type, password, user name, and so on. A Non-admin user can
ad on

log in to and operate the device after being created.


el .c

Remarks
ez

1. Common user types:


Administrator ( admin ): has the permission of accessing all resources supported by the device, and can operate
en

all functions of the device. The admin account cannot be deleted.


im

Operator ( operator ): has the permission to view. Their operation permissions are assigned by admin .
ng

Operator accounts are created by the administrator only.


Aj

User ( viewer ): has the permission to view only. They have no operation permission. User accounts are created
Co

by the administrator only.


2. User types related to the installer:
Local Administrator ( localAdmin ) : Activated by the device owner on the local software side (e.g., WEB) that
accompanies the device. By default, a localAdmin has the permission to access the device and perform all
functions supported by the device.
Local Installer ( localInstaller ) : Activated by localAdmin . The identity can be given to the installer for device
installation and debugging on site. By default, a localInstaller has the permission to access and perform all
functions supported by the device.
Local Operator ( localOperator ) : Created by localAdmin or cloudAdmin . A password is required to be set by
localAdmin , cloudAdmin , localInstaller , installerAdmin , or installerEmployee before the local operator
can log in via the local keypad. A local operator’s business functions are limited, and cannot configure device
parameters. By default, only arming, disarming (including alarm clearing), and relay control operations are
allowed. According to the actual business needs, there can be two types of local operator: one-time local
operator (can only log in once and the identity will expire after logging out), and temporary local operator (can
log in within the validity period), both created by localAdmin or cloudAdmin .
Cloud Administrator ( cloudAdmin ) : Created by the device owner in the mobile software that accompanies the
device (e.g. HC over the cloud) and then synchronized to the device. By default, a CloudAdmin has the
permission to access and perform all functions supported by the device.
Cloud Operator ( cloudOperator ) : Created by cloudAdmin in the mobile software that accompanies the device
(e.g. HC over the cloud) and then synchronized to the device for ordinary mobile users. A cloud operator’s
business functions are limited, and cannot configure device parameters, access and view the device,

m
arm/disarm (including alarm clearing), or operate relays.

co
Installer Administrator ( installerAdmin ) : User on the installer business application, created on the business

a.
platform (e.g. HPC deployed in the cloud) and then synchronized to the device for remote device management
by the business platform’s admin. By default, an installerAdmin has the permission to access the device and

C. arc
perform all functions supported by the device. To facilitate installation management, when the business
platform sets installerAdmin as the highest authority and synchronizes to the device, installerAdmin is

s, em
allowed to modify user permissions of localAdmin and cloudAdmin .

A
Installer Employee ( installerEmployee ) : User on the installer business application, created on the business

no fr
platform (e.g. HPC deployed in the cloud) and then synchronized to the device for the employees on the

ri on
business platform to remotely install and debug the device. By default, an installerEmployee has the
permission to access the device and perform all functions supported by the device.
3. User password:
Ma oc
up
To ensure the security of account information, it is recommended to create a password using eight to sixteen
characters, including at least two kinds of the following categories: digits, lower case letters, upper case letters,
co gr

and special characters, and the user name is not allowed in the password.
es a@

Risky passwords include the following categories: less than 8 characters, containing only one type of
characters, same as the user name or reversed user name. To protect user data privacy and improve security,
Fr rc

it is recommended to use a strong password.


y ema

The password strength rule is as follows:


a. Strong password: including at least three kinds of the categories (digits, lower case letters, upper case
os fr

letters, and special characters).


b. Medium password: a combination of digits and special characters, lower case letters and special
ad on

characters, upper case letters and special characters, or lower case letters and upper case letters.
el .c

c. Weak password: a combination of digits and lower case letters or digits and upper case letters.
ez

5.18.2 API Calling Flow


en

1. Get the user management capability of devices on the client: GET


im

/ISAPI/Security/users/<indexID>/capabilities .
ng
Aj

2. Add device users on the client: POST /ISAPI/Security/users?security=<security>&iv=<iv> .


Co

Remarks:
Only admin can create other types of users, and creating users requires login password verification
( <loginPassword> ) of admin .
If the user account is inactivated, it's required to log in to the account and change the user password ( PUT
/ISAPI/Security/users/<indexID>?security=<security>&iv=<iv> ). The account is activated when the
password is changed.
When the account is inactivated, it's not allowed to perform any operations except changing the user
password. Otherwise, an error ( 0x0020000f ) will be returned.
3. Edit the user information on the client: PUT /ISAPI/Security/users/<indexID>?security=<security>&iv=<iv> .
Remarks:
It requires password verification of admin when admin changes the user password. The account turns
inactivated when the user password is changed by admin . Once logging out, the user needs to change the
password first before the next login.
When non-admin users changed their passwords, the account remains activated.
4. Delete users on the client: DELETE /ISAPI/Security/users?loginPassword=<loginPassword>&security=
<security>&iv=<iv> .

Remarks:
Only admin can delete users, and deleting users requires login password verification of admin .

m
co
5. Get the user information, including user name, activation status ( <userActivationStatus> ), and so on.

a.
Get a single user information: GET /ISAPI/Security/users/<indexID>?security=<security>&iv=<iv> .

C. arc
Get the information of all users: GET /ISAPI/Security/users?security=<security>&iv=<iv> .
Get the information of online users: GET /ISAPI/Security/onlineUser . Online users refer to users who have

s, em
logged in to the device. The information such as user name, user type, and IP address can be obtained.

A
no fr
Remarks:

ri on
If multiple attempts of admin login password verification failed in the process of adding, editing, or deleting users,
the admin will be locked. The remaining attempts are defined by the field retryTimes in the response message.

Ma oc
The new password cannot be the same as the last password. Otherwise, an error ( 0x400010E8 ) will be returned.
up
5.18.3 Exception Handling
co gr

Error Code
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
statusCode statusString subStatusCode errorCode errorMsg Description
The account
Invalid
4 theAccountIsNotActivated 0x0020000f is not
Operation
activated.
Incorrect
Invalid
4 loginPasswordError 0x4000000C login
Operation
password.

m
The answer

co
to the user Please set a
Invalid
4 theAnswerToTheUserSecurityQuestionIsDuplicate 0x4000A0B6 security different

a.
Operation
question is answer.

C. arc
duplicate.
The answer

s, em
to the user Please set a
Invalid

A
4 theAnswerToTheUserSecurityQuestionIsTooShort 0x4000A0B7 security longer

no fr
Operation
question is answer.

ri on
too short.

Ma oc
New
password Please set a
up
Invalid
4 cannotSameAsOldPassword 0x400010E8 cannot be the different
Operation
co gr

same as the password.


old one.
es a@

Please enter
Fr rc

the correct
password. If
y ema

Incorrect you forgot


Invalid
6 administratorPasswordError 0x60000042 administrator the
os fr

Content
password. password,
you can
ad on

reset the
el .c

password.
ez
en

5.19 User Types Related to the Installer (supported by the security


control panel)
im
ng

For different application scenarios, e.g., local environment, cloud environment, and HPP installer environment, users
Aj

related to the installer can be classified into seven types: localAdmin , localInstaller , localOperator , cloudAdmin ,
Co

installerAdmin , installEmployee , and cloudOperator .

5.19.1 Create the User


5.19.1.1 Local Environment
In a local environment (LAN), three types of users are involved: localAdmin , localInstaller , and localOperator . By
default, two types of users exist on the device: localAdmin and localInstaller , but localInstaller is not enabled,
which means that although a user ID is created, but the user cannot log in as localInstaller before the user type is
enabled by localAdmin . localOperator is created by localAdmin , and can only log in via local keypad. Users who have
been set with the keypad password can log in via keypad.
m
co
a.
C. arc
s, em
A
no fr
ri on
5.19.1.2 Cloud Environment

Ma oc
In a cloud environment, four types of users are involved: cloudAdmin , cloudOperator , localInstaller , and
localOperator . After logging in to the device on HC application via cloud, a cloudAdmin can be created. Then, the
up
cloudAdmin can share the device to create a cloudOperator . Note that after a cloudAdmin is created, the existing
co gr

localAdmin will expire. Users who have been set with the keypad password can log via keypad.
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

5.19.1.3 HPP Installer Environment


In an HPP installer environment, five types of users are involved: cloudAdmin , cloudOperator , localOperator ,
installerAdmin , and installerEmployee . After a device is added to HPC, the user adding protocol will be applied, and
installerAdmin and installerEmployee can be created (batch creating is supported). Note that after an
installerAdmin is created, the existing localInstaller will expire. Users who have been set with the keypad
password can log via keypad.
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@

5.19.2 User Permissions


Fr rc

s
y ema

User Type / Local Local Cloud Cloud Installer Installer


Local Operator
Permission Admin Installer Admin Operator Admin Employee
os fr

Arming √ √ √ √ √ √ √
ad on

Disarming (Alarm
√ √ √ √ √ √ √
Clearing)
el .c

Bypass √ √ × √ √ √ √
ez

View logs and


en

√ √ × √ √ √ √
status
im

Configure
ng

√ √ × √ × √ √
Aj

parameters
Co

Manage partitions √ √ × √ × √ √
one-time local operator:
Operate relays √ √ × temporary local √ √ √ √
operator: √
Edit localAdmin's
√ √ × × × √ √
keypad password
Edit cloudAdmin's
× √ × √ × √ √
keypad password
Edit localInstaller's
× √ × × × × ×
keypad password
Edit
Edit
installerAdmin's × × × × × √ ×
keypad password
√ (only the
Edit
employee's
installerEmployee's × × × × × √
own
keypad password
password)
Edit
localOperator's √ √ × √ × √ √

m
keypad password

co
Edit √ (only the

a.
cloudOperator's × √ × √ operator's own √ √

C. arc
keypad password password)
Edit localAdmin's
× × × × × × ×

s, em
permission

A
no fr
Edit cloudAdmin's
× × × × × × ×
permission

ri on
Edit localInstaller's

Ma oc
√ × × √ × × ×
permission
up
Edit
co gr

installerAdmin's √ × × √ × × ×
permission
es a@

Edit
Fr rc

installerEmployee's √ × × √ × × ×
permission
y ema

Edit
os fr

localOperator's √ √ × √ × √ √
permission
ad on

Edit
el .c

cloudOperator's × √ × √ × √ √
permission
ez
en

Note: "Configure parameters" includes parameters of zones, sounders, keypads, card readers, keyfobs, cards, relays,
repeaters, transmitters, network cameras, partitions, and so on.
im
ng

5.19.3 Manage User Information


Aj
Co

5.19.3.1 Local User


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr

1. Get the configuration capability of a specific user: GET /ISAPI/Security/users//capabilities


2. (Optional) Add a user: POST /ISAPI/Security/users?security=&iv=. The nodes userName, password,
ad on

keypadPassword, and loginPassword in the message will be encrypted.


el .c

3. Get information of all users: GET /ISAPI/Security/users?security=&iv=. The nodes phoneNum, emailAddress,
password, duressPassword, keypadPassword, and loginPassword in the message will be encrypted.
ez

4. Get information of a single user: GET /ISAPI/Security/users/?security=&iv=. The index in the URL is the user ID.
en

5. Set permissions for a single user: PUT /ISAPI/Security/users/?security=&iv=. The index in the URL is the user ID.
im

6. (Optional) Set information of all users: PUT /ISAPI/Security/users?security=&iv=. This API can be called for batch
ng

configuring user information.


Aj

7. (Optional) Delete a single user: DELETE /ISAPI/Security/users/?loginPassword=&security=&iv=. Delete the user by


Co

indexID, and loginPassword is required for deleting the user. The loginPassword should be encrypted.
8. (Optional) Delete all users: DELETE /ISAPI/Security/users?loginPassword=&security=&iv=. loginPassword should
be encrypted.

5.19.3.2 Cloud User


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Check whether the device supports cloud user management: GET /SDK/capabilities. If the node value of
isSupportCloudUserManage is true, cloud user management is supported in these URLs:
/ISAPI/Security/CloudUserManage/users/capabilities?format=json
/ISAPI/Security/CloudUserManage/users/?format=json
/ISAPI/Security/CloudUserManage/users?format=json
2. Get the capability of cloud user management: GET /ISAPI/Security/CloudUserManage/users/capabilities?
format=json. If the node value of isSupportAddCloudUserList is true, it supports batch adding cloud users.
3. Add a single cloud user: POST /ISAPI/Security/CloudUserManage/users?format=json. The following cloud users
need to create the user accounts on their own: coludAdmin, installerAdmin, installerEmployee, and cloudOperator,
which is different from localOperator who needs to be created by admin users. Enter information such as user
name, password, e-mail, and phone number to create a user account and put into use.
name, password, e-mail, and phone number to create a user account and put into use.
4. (Optional) Add cloud users in a batch: POST /ISAPI/Security/CloudUserManage/usersBatch?format=json. For
installerEmployee users that has been created on HPC, use this URL to apply them to the device and synchronize
user information.
5. Get information of all cloud users: GET /ISAPI/Security/CloudUserManage/users?format=json
6. Get information of a single cloud user: GET /ISAPI/Security/CloudUserManage/users/?format=json
7. Search for information of a single cloud user (by type): /ISAPI/Security/CloudUserManage/users/byType?

m
format=json. Support searching by e-mail, phone number, and user name.

co
a.
8. Set information of a single cloud user: PUT /ISAPI/Security/CloudUserManage/users/?format=json

C. arc
9. Delete a single cloud user: DELETE /ISAPI/Security/CloudUserManage/users/?format=json. Delete the user by
specifying the user's indexID.

s, em
10. Delete cloud users in a batch: PUT /ISAPI/Security/CloudUserManage/users/delete?format=json. Support batch

A
deleting by user names, user types, phone numbers, and e-mails.

no fr
ri on
5.19.4 Manage User Permissions

Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Check whether the device supports configuring permissions of a specific type of users: GET
/ISAPI/Security/capabilities?username=. If the node value of isSupportInstallerCap is true, the installer users'
permissions can be configured. There is no specific capability node for operator type users, and by default their
permissions can be configured.
2. Get the default permission capabilities of a specific type of users.
For installer users: GET /ISAPI/Security/UserPermission/installer/capabilities?format=json
For operator users: GET /ISAPI/Security/UserPermission/operatorCap
3. Get user permissions of all users: GET /ISAPI/Security/UserPermission
4. (Optional) Get user permissions of a single user: GET /ISAPI/Security/UserPermission/. The index in the URL is the
user ID.
5. Set user permissions of a single user: PUT /ISAPI/Security/UserPermission/
6. (Optional) Set user permissions of all users: PUT /ISAPI/Security/UserPermission

m
6 Network Configuration

co
a.
6.1 ISUP Multi-Center Management

C. arc
6.1.1 Introduction to the Function

s, em
When connected to the IoT, a device may be simultaneously connected to multiple centers. For example, the device may

A
no fr
be connected to a third-party business center and a device maintenance management center simultaneously as shown
in the figure below.

ri on
Note: A center is different from a platform. A center may contain more than one platform.

Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj

In pull mode, the center logs in to the device if the device is connected to the center via protocols like ISAPI, device
Co

network SDK, etc.


In push mode, the device registers to access the center if the device is connected to the center via EZ cloud, ISUP, etc
Here we mainly illustrate the integration process of connecting devices to ISUP multi-center via ISAPI.

6.1.2 API Calling Flow


6.1.2.1 Flow Example
The flow of the ISUP multi-center is as follows.
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr

6.1.2.2 CMS Address Configuration


es a@

Configure the address of CMS1 and CMS2 in ISUP multi-center via ISAPI.
Fr rc

1. Check whether the device supports ISUP: GET /ISAPI/System/Network/capabilities . If the node
y ema

isSupportCaptureFingerPrint is returned and its value is true, it indicates that the device supports ISUP.
2. Check whether the device supports multiple ISUP centers: GET /ISAPI/System/Network/Ehome/capabilities . If
os fr

the node ISUPID is returned, it indicates that the device supports multiple ISUP centers.
ad on

3. Configure the address of multiple ISUP centers: [GET/PUT] /ISAPI/System/Network/Ehome/<ISUPID> .


el .c

Note:
ez

ISUPID represents the ID of CMS 1 and CMS 2, and it is required to configure the address of each CMS respectively.
en

6.1.2.3 AMS Address Configuration


im

After the address configuration of CMS 1 and CMS 2 is finished and the device is connected to CMS 1 and
ng

CMS 2 via ISUP, configure the AMS address for CMS 1 and CMS 2 respectively via ISUP.
Aj

1. Call GET /ISAPI/Event/notification/httpHosts to get all configured HTTP/HTTPS listening center addresses and
Co

their AMS addresses via the corresponding communication link with the CMS.
Example:
(1) id=1 represents the AMS 1 address of the CMS 1 (the protocolType is EHome), id=2 represents the AMS 2 address
of the CMS 2 (the protocolType is EHome), and id=3 represents the address of HTTP listening center (protocolType is
HTTP).
(2) When the CMS 1 requests to get the address information, the device will return the AMS 1 address of the CMS 1
and the address of HTTP listening center.
(3) When the CMS 2 requests to get the address information, the device will return the AMS 2 address of the CMS 2
and the address of HTTP listening center.
2. For the obtained address list:
(1) If an AMS address already exists (the protocolType contains EHome), call PUT
/ISAPI/Event/notification/httpHosts/<ID> to edit the AMS address.
(2) If an AMS address does not exist (the protocolType does not contain EHome), call
POST /ISAPI/Event/notification/httpHosts to create an AMS address.
3. Connect the device to the AMS.
Note:
(1) When calling the API ( DELETE /ISAPI/Event/notification/httpHosts ) via ISAPI, delete the HTTP/HTTPS center
only and do not perform any operations on the ISUP AMS center.

m
co
(2) When calling the API ( PUT /ISAPI/Event/notification/httpHosts ) via ISUP, if there are two or above AMS
addresses (protocolType is EHome) in the list, it indicates that a parameter configuration error occurs and the API will

a.
report the error.

C. arc
(3) When calling the API ( PUT /ISAPI/Event/notification/httpHosts/<ID> ) via ISUP, and the protocolType is EHome,
the returned represents the AMS address of corresponding link.

s, em
6.1.2.4 Get ISUP Information

A
no fr
Get the CMS and AMS address for the device to access the ISUP multi-center via ISAPI.

ri on
1. Check whether the device supports getting ISUP information: GET /ISAPI/System/Network/Ehome/capabilities .
If isSupportISUPServerInfo is returned and its value is true, it indicates that the device supports getting ISUP
information.
Ma oc
up
2. Get ISUP information (including the address list of the configured CMS and AMS): GET
co gr

/ISAPI/System/Network/ISUPServerInfo?format=json .
es a@

6.1.3 Message Format and Example


Fr rc

URL: /ISAPI/System/Network/ISUPServerInfo?format=json .
y ema

Method: GET .
Message Example:
os fr

{
ad on

"ISUPServerInfoList":[{
"ID":1, //req, int, ID, range:[1,2]
"enabled":true, //req, boolean, whether it is enabled
el .c

"CMSInfo":{
"addressingFormatType":"ipaddress", //opt, string, address type: ("ipaddress, "hostname")
"hostName":"", //opt, string, domain name(it is valid when the addressingFormatType is hostname)
ez

"ipV4Address":"", //opt, string, IPv4 address(it is valid when the addressingFormatType is ipaddress)
"ipV6Address":"", //opt, string, IPv6 address(it is valid when the addressingFormatType is ipaddress)
en

"portNo":1, //opt, integer, port No., range:[0,65535]


"deviceID":"", //opt, string, device ID, range:[1,64]
"protocolVersion":"v5.0" //opt, string, protocol version("v2.0"-v2.0 version, "v2.6"-v2.6 version, "v4.0"-v4.0 version, "v5.0"-v5.0 version)
im

},
"AMSInfo":{
ng

"addressingFormatType":"ipaddress", //opt, string, address type: ("ipaddress, "hostname")


Aj

"hostName":"", //opt, string, domain name(it is valid when the addressingFormatType is hostname)
"ipV4Address":"", //opt, string, IPv4 address(it is valid when the addressingFormatType is ipaddress)
Co

"ipV6Address":"", //opt, string, IPv6 address(it is valid when the addressingFormatType is ipaddress)
"portNo":1 //opt, integer, port No., range:[0,65535]
}
}]
}

6.2 Listening Service


6.2.1 Introduction to the Function
When an event occurs, the device creates connection with the client and uploads alarm information. Meanwhile, the
listening host receives data from the device. The IP address and the port No. of the listening host should be configured
for the device. The HTTP listening service supports subscribing to specific events when adding or editing the listening
host. Only the specified events will be uploaded by the device.(currently not available for the device)
Aj
im
Co en
ng ez

6.2.2.1 Listening Service


6.2.2 API Calling Flow
el .c
ad on
os fr
y ema
Fr rc
es a@
co gr
s up
Ma oc
ri on
no fr
s, em
C. arc
A a.
co
m
1. Check whether the device supports configuring listening host parameters:
Get the configuration capability of the listening host: GET /ISAPI/Event/notification/httpHosts/capabilities .
If the node <HttpHostNotificationCap> exists in the returned message and its value is true, it indicates that the
device supports configuring listening host parameters.
2. Configure the parameters of the listening host:
Configure the parameters of all listening hosts: PUT /ISAPI/Event/notification/httpHosts?security=
<security>&iv=<iv> ;

m
co
Get the parameters of all listening hosts: GET /ISAPI/Event/notification/httpHosts?security=<security>&iv=
<iv> ;

a.
Configure the parameters of a listening host: PUT /ISAPI/Event/notification/httpHosts/<hostID>?security=

C. arc
<security>&iv=<iv> ;

Get the parameters of a listening host: GET /ISAPI/Event/notification/httpHosts/<hostID>?security=

s, em
<security>&iv=<iv> ;

A
no fr
3. Enable the listening service:

ri on
The user needs to enable the listening service of the listening host.

Ma oc
4. (Optional) Test the listening service:
up
The platform applies the command to the device to test whether the listening host is available for the device: POST
co gr

/ISAPI/Event/notification/httpHosts/<hostID>/test .
es a@

5. The listening host receives event information from the device:


Fr rc

When an event occurs, the device creates connection with the client and uploads alarm information. Meanwhile,
y ema

the listening host receives data from the device. See details in Event Message Grammar.
Remark: You can also configure the listening parameters such as the timeout.
os fr

6.2.2.2 Event Message Grammar


ad on

When an event occurs or an alarm is triggered, the event/alarm information can be with binary data (such as pictures)
el .c

and without binary data.


ez

1. Without Binary Data:


en

The Content-Type in the Headers of the HTTP request sent by the device is usually application/xml or
application/json as follows:
im

Alarm Message Sent by the Device


ng
Aj
Co

POST Request_URI HTTP/1.1 <!--/Request_URI, related URI: POST /ISAPI/Event/notification/httpHosts-->


Host: data_gateway_ip:port <!--Host: HTTP server's domain name / IP address and port No., related URI: POST /ISAPI/Event/notification/httpHosts-->
Accept-Language: zh-cn
Date: YourDate
Content-Type: application/xml; <!--content type, which is used for the upper layer to distinguish different formats when parsing the message-->
Content-Length: text_length
Connection: keep-alive <!--maintain the connection between the device and the server for better transmission performance-->

<EventNotificationAlert/>

Response by the Listening Host

HTTP/1.1 200 OK
Date: YourDate
Connection: close

2. With Binary Data


The format of the data sent by the device is HTTP form (multipart/form-data). The Content-Type in the Headers of the
HTTP request sent by the device is usually multipart/form-data, boundary=<frontier> : boundary is a variable, which
is used to divide the HTTP Body into multiple units and each unit has its Headers and Body. See details in RFC 1867
(Form-based File Upload in HTML). Please note the -- before and after the boundary.
Alarm Message Sent by the Device

POST Request_URI HTTP/1.1 <!--Request_URI, related URI: POST /ISAPI/Event/notification/httpHosts-->


Host: device_ip:port <!--Host: HTTP server's domain name / IP address and port No., related URI: POST /ISAPI/Event/notification/httpHosts-->
Accept-Language: zh-cn
Date: YourDate
Content-Type: multipart/form-data;boundary=<frontier>

m
Content-Length: text_length

co
Connection: keep-alive <!--maintain the connection between the device and the server for better transmission performance-->

--<frontier>

a.
Content-Disposition: form-data; name="Event_Type"
Content-Type: text/xml <!--maintain the connection between the device and the server for better transmission performance-->

C. arc
<EventNotificationAlert/>
--<frontier>
Content-Disposition: form-data; name="Picture_Name"
Content-Length: image_length

s, em
Content-Type: image/jpeg

A
no fr
[picture data]
--<frontier>--

ri on
Response by the Listening Host

HTTP/1.1 200 OK
Ma oc
up
Date: YourDate
Connection: close
co gr

Here are the descriptions of the main keywords.


es a@

keyword example description


Fr rc

multipart/form-data;
y ema

Content-Type Content type, multipart/form-data refers to data in form format.


boundary=frontier
os fr

Separator of the form message. A form message starts with --boundary


boundary frontier
and ends with --boundary--.
ad on

Content- form-data;
el .c

Content description. form-data refers to data in the form format.


Disposition name="Picture_Name";
ez

filename "Picture_Name" File name. The file refers to the form message.
en

Content- Content length. The length of the content which starts from \r\n to the
10
Length next --boundary.
im
ng
Aj

6.2.3 Exception Handling


Co

6.2.3.1 Error Codes


statusCode statusString subStatusCode errorCode errorMsg Description Remarks
Invalid Event subscription is not
6 eventNotSupport 0x60001024
Content supported.

6.3 Wi-Fi Network Management


6.3.1 Introduction to the Function
The user can plug a network cable into a wireless router and sets the working mode of the router as AP mode to enable
Wi-Fi. The device under Wi-Fi network management is used as the AP to provide a wireless network for the Station. It
can provide functions include wireless server information management of internet APIs and device list information
accessed by the wireless server.

6.3.2 API Calling Flow


1. Wi-Fi parameter configuration:
Check whether the device supports configuring Wi-Fi parameters: GET /ISAPI/System/capabilities ; if the node is
returned and its value is true, it means the device supports wireless network and Wi-Fi parameter configuration.
Get the capability of configuring Wi-Fi parameters: GET
/ISAPI/System/Network/interfaces/<interfaceID>/wireless/capabilities ;

m
Get Wi-Fi parameters: GET /ISAPI/System/Network/interfaces/<interfaceID>/wireless ;

co
Configure Wi-Fi parameters: PUT /ISAPI/System/Network/interfaces/<interfaceID>/wireless ;

a.
Get Wi-Fi quality parameters: GET /ISAPI/System/Network/wifiQuality?format=json ;

C. arc
2. Wi-Fi area parameter configuration:
Check whether the device supports Wi-Fi area parameters: GET /ISAPI/System/capabilities ; if

s, em
<isSupportWifiRegion> is returned and its value is true, it indicates that device supports Wi-Fi area configuration.

A
Get the capability of configuring Wi-Fi area parameters: GET

no fr
/ISAPI/System/Network/wirelessServer/Region/Capabilities ;

ri on
Get Wi-Fi area parameters: GET /ISAPI/System/Network/wirelessServer/Region ;

Ma oc
Configure Wi-Fi area parameters: PUT /ISAPI/System/Network/wirelessServer/Region ;
3. Wi-Fi connection parameters:
up
Get the capability of configuring Wi-Fi connection parameters:GET
co gr

/ISAPI/System/Network/interfaces/<interfaceID>/wirelessStatus/capabilities ;
es a@

Get Wi-Fi connection parameters of single network interface: GET


/ISAPI/System/Network/interfaces/<interfaceID>/wirelessStatus ;
Fr rc

Configure Wi-Fi connection parameters of single network interface: PUT


y ema

/ISAPI/System/Network/interfaces/<interfaceID>/wirelessStatus ;
Get Wi-Fi connection status of single network interface: GET
os fr

/ISAPI/System/Network/interfaces/<interfaceID>/wireless/connectStatus ;
ad on

4. Wi-Fi transmission status:


el .c

Get Wi-Fi transmission status of single network interface: GET


/ISAPI/System/Network/interfaces/<interfaceID>/wireless/transmission/capabilities ;
ez

Get Wi-Fi transmission status of single network interface: GET


en

/ISAPI/System/Network/interfaces/<interfaceID>/wireless/transmission ;
Get the Wi-Fi transmission status of the specific network interface: GET
im

/ISAPI/System/Network/interfaces/<interfaceID>/wireless/transmission/<indexID> ;
ng
Aj

Get Wi-Fi transmission status of all network interfaces:GET


Co

/ISAPI/System/Network/interfaces/<interfaceID>/wireless/transmissionList ;

7 Video (General)
7.1 . Compression of Stream Transcoding
7.1.1 Introduction to the Function
When a device is deployed in a single network access point and needs to access the platform through the mobile
network, the uplink network bandwidth of the device will be insufficient, which cannot meet the requirement of high-
definition live view. The above problem can be solved via stream transcoding. The bit rate of network transmitted video
stream is reduced to improve the resolution of the video stream, so as to achieve the high-definition live view.
7.1.2 API Calling Flow
1. Check whether the device supports compression configurations of stream transcoding: GET
/ISAPI/System/capabilities . If the field isSupportCompressedTranscode is returned and its value is true , it
indicates that the function is supported.
2. Get the capability of compression parameters of stream transcoding for a specified channel: GET
/ISAPI/Streaming/channels/<channelID>/TranscodeCfg/capabilities?format=json .

3. Get the compression parameters of stream transcoding for a specified channel: GET

m
/ISAPI/Streaming/channels/<channelID>/TranscodeCfg?format=json .

co
4. Set the compression parameters of stream transcoding for a specified channel: PUT

a.
/ISAPI/Streaming/channels/<channelID>/TranscodeCfg?format=json .

C. arc
Remarks:
The transcoding compression parameters of the live view stream and the playback stream can be different.

s, em
The compression parameters configuration of stream transcoding has no influence on encoding parameters

A
no fr
of normal videos/audios.

ri on
7.2 . OSD
7.2.1 Introduction to the Function
Ma oc
up
On-screen display is applied in the display interface of cameras, and is used to display some characters or graphics on
co gr

the video to provide some information to the audience. After OSD configurations on the client software, the configured
information text will be overlaid on the video stream of cameras and displayed on the screen.
es a@

The typical application scenarios of dynamic OSD: elevator floor number overlay for elevator monitoring, characters
Fr rc

overlay for toll stations on highway/road, notification information overlay during live video programs. The typical
application scenarios of static OSD: fixed information (such as camera position, date, time) overlay on the video signal.
y ema

7.2.2 API Calling Flow


os fr

7.2.2.1 OSD
ad on

1. The client software gets the OSD capability of a specified channel: GET
el .c

/ISAPI/System/Video/inputs/channels/<channelID>/overlays/capabilities .
ez

2. The client software configures OSD parameters, including whether to enable OSD, custom text overlay, time
overlay, and overlay format, for a specified channel.
en

Get: GET /ISAPI/System/Video/inputs/channels/<channelID>/overlays .


im
ng
Aj

Set: PUT /ISAPI/System/Video/inputs/channels/<channelID>/overlays .


Co

Remarks:
The configuration URL supports various parameters, including custom text overlay, channel name overlay,
time overlay, overlay format, and so on. Some of these parameters can also be configured by other URLs, as
shown below: TextOverlayList can also be configured via URL of custom text overlay.
channelNameOverlay can also be configured via URL of channel name overlay.

DateTimeOverlay can also be configured via URL of channel time overlay.

The overlaid information alignment mode (defined by alignment ) refers to the alignment mode of custom
text:
customize : custom mode. The client software sends the overlay position coordinates of custom text to the
device, and the device will overlay the characters on the stream for display according to the position
coordinates.
alignRight : right align. The device will display custom text on the right boundary of screen.

alignLeft : left align. The device will display custom text on the left boundary of screen.

allRight : all right align. The device will display all overlay contents, including custom text, the channel name,
the time on the right boundary of screen.
allLeft :all left align. The device will display all overlay contents, including custom text, the channel name,
the time on the left boundary of screen.

m
co
7.2.2.2 Custom Text Overlay

a.
1. The client software gets the OSD capability of a specified channel: GET

C. arc
/ISAPI/System/Video/inputs/channels/<channelID>/overlays/capabilities . If TextOverlayList is returned, it
indicates that custom text overlay is supported and size defines the maximum number of custom texts.

s, em
2. The client software configures custom text OSD. textID refers to the custom text No., and the value range is: [1,

A
no fr
size ]:

ri on
Create a custom text for a specified channel: POST
/ISAPI/System/Video/inputs/channels/<channelID>/overlays/text .

Ma oc
Get overlay parameters of a custom text for a specified channel: GET
up
/ISAPI/System/Video/inputs/channels/<channelID>/overlays/text/<textID> .
co gr

Set overlay parameters of a custom text for a specified channel: PUT


es a@

/ISAPI/System/Video/inputs/channels/<channelID>/overlays/text/<textID> .
Fr rc

Delete a custom text: DELETE /ISAPI/System/Video/inputs/channels/<channelID>/overlays/text/<textID> .


y ema

Get overlay parameters of all custom texts for a specified channel: GET
/ISAPI/System/Video/inputs/channels/<channelID>/overlays/text .
os fr

Set overlay parameters of all custom texts for a specified channel: PUT
ad on

/ISAPI/System/Video/inputs/channels/<channelID>/overlays/text .
el .c

Delete all custom texts for a specified channel: DELETE


/ISAPI/System/Video/inputs/channels/<channelID>/overlays/text .
ez

7.2.2.3 Channel Name Overlay


en

1. The client software gets the OSD capability of a specified channel: GET
im

/ISAPI/System/Video/inputs/channels/<channelID>/overlays/capabilities . If channelNameOverlay is
ng
Aj

returned, it indicates that channel name overlay is supported.


Co

2. The client software configures the channel name overlay, including whether to enable channel name overlay,
overlay position, and so on.
Get channel name overlay parameters: GET
/ISAPI/System/Video/inputs/channels/<channelID>/overlays/channelNameOverlay .

Set channel name overlay parameters: PUT


/ISAPI/System/Video/inputs/channels/<channelID>/overlays/channelNameOverlay .

7.2.2.4 Channel Time Overlay


1. The client software gets the OSD capability of a specified channel: GET
/ISAPI/System/Video/inputs/channels/<channelID>/overlays/capabilities . If DateTimeOverlay is returned, it
indicates that channel time overlay is supported.
2. The client software configures the channel time overlay, including whether to enable channel time overlay, overlay
position, date format, and so on.
Get channel time overlay parameters: GET
/ISAPI/System/Video/inputs/channels/<channelID>/overlays/dateTimeOverlay .

Set channel time overlay parameters: PUT


/ISAPI/System/Video/inputs/channels/<channelID>/overlays/dateTimeOverlay .

7.3 Configuration of Video Encoding Service Plan

m
co
7.3.1 Introduction to the Function

a.
The existing video encoding parameters are complicated to some degree, and might not be user-friendly. Users' main
focus is on image quality and the required storage capacity. Therefore, video encoding service plan is introduced to

C. arc
facilitate user configuration by organizing the parameters into different plans. If you configure a plan, the previous
manual configurations will be overwritten. If you keep the previous manual configurations, they will be recognized as in

s, em
a custom plan.

A
no fr
7.3.2 API Calling Flow

ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Get the encoding parameter capability of a specific channel: GET


/ISAPI/Streaming/channels/<trackStreamID>/capabilities
2. Get the parameter capability of video encoding service plan: GET
/ISAPI/Streaming/channels/<channelID>/VideoCodeMealParams/capabilities?format=json
3. (Optional) Set video encoding service plan parameters: PUT
/ISAPI/Streaming/channels/<channelID>/VideoCodeMealParams?format=json . The client can select a service
plan. The parameters in the plans cannot be edited, except the custom plan.
4. Set the encoding parameters of a specific channel: PUT /ISAPI/Streaming/channels/<trackStreamID> . The
parameters in the custom plan can be edited.
Note:
Get the parameter content of the current video encoding service plan:
Get the parameters of the video encoding service plan: POST
/ISAPI/Streaming/channels/<channelID>/SearchVideoCodeMealParams?format=json .

Get the capability of getting video encoding service plan parameters: GET
/ISAPI/Streaming/channels/<channelID>/SearchVideoCodeMealParams/capabilities?format=json .

Restore to the default parameters: PUT /ISAPI/Streaming/RestoreDefaultParam?format=json . The parameters can be


restored to default in custom plan.

m
co
8 Facial Recognition

a.
8.1 Face Picture Library Management

C. arc
8.1.1 Face Picture Library Management

s, em
A
8.1.1.1 Introduction to the Function

no fr
This function is mainly used to manage operations on face picture libraries on the device, such as adding, deleting,

ri on
editing, or searching for the face picture libraries, importing face pictures and additional person information to the
libraries, editing, deleting, or searching for face pictures and additional person information in the libraries, and face
Ma oc
picture modeling. This function is also the prerequisite of other face picture library functions such as face picture library
up
comparison.
co gr

8.1.1.2 API Calling Flow


es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on

1. Get the capability of managing face picture libraries for checking functions supported by the device: GET
el .c

/ISAPI/Intelligent/FDLib/capabilities .
ez

2. Manage face picture libraries.


en

i. Create a face picture library: POST /ISAPI/Intelligent/FDLib . After the face picture library is created, the
im

device will automatically generate the face picture library ID (that is, FDID is returned in the message
ng

< FDLibInfoList >). If you need to manage the face picture library ID by yourself, you can configure the
Aj

custom face picture library ID ( customFaceLibID ) in the request message < CreateFDLibList > as needed.
Co

Afterwards, you can perform operations on the face picture library by the custom ID instead of FDID .
ii. Edit parameters of the face picture library: PUT /ISAPI/Intelligent/FDLib/<FDID> . If you have added the
custom face picture library ID in the above steps, you can also call PUT
/ISAPI/Intelligent/FDLib/<customFaceLibID>?FDType=custom to configure parameters using
customFaceLibID .

iii. Get parameters of the face picture library: GET /ISAPI/Intelligent/FDLib/<FDID> . Operations involved with
the custom face picture library ID are the same as those mentioned above.
iv. Delete the face picture library: DELETE /ISAPI/Intelligent/FDLib/<FDID> . Operations involved with the
custom face picture library ID are the same as those mentioned above.
3. Import data of the face picture library.
i. Import face picture data and automatically perform modeling, POST
/ISAPI/Intelligent/FDLib/pictureUpload . By repeatedly applying the previous API, you can import the face
picture data (including the face picture and additional face picture information FaceAppendData ) to the
corresponding face picture library; after it is successfully imported, the device will automatically model on the
picture which could take some time, then the a face picture ID will be automatically generated (i.e., PID is
returned in response parameters MaskInfo ) by device after modeling succeeds; if you want to manually
manage the face picture ID, you can add customized face picture ID ( customHumanID ) as needed when
applying the request parameter PictureUploadData . PID can be replaced with customized face picture ID for
subsequent face-picture-related operations.

m
ii. Import face picture library data in concurrent operation mode, POST

co
/ISAPI/Intelligent/FDLib/pictureUpload?type=concurrent . If you want to improve the import efficiency,
you can apply concurrent operation that the device will only store the picture not model on the picture. You

a.
will need to manually model on the picture (refer to Face Picture Library Data Modeling Management Flow for

C. arc
details). Note: Back-end DeepinMind devices will automatically perform modeling after data is imported even
though under concurrent operation circumstances; if you demand to manually perform modeling, you can still

s, em
apply modeling management.

A
no fr
4. (Optional) Manage face picture library data modeling. If you imported face picture library data in concurrent
operation mode, you can select a time for device data modeling management after importing completed:

ri on
i. Modeling on registered face pictures, GET /ISAPI/Intelligent/FDLib/manualModeling ;

Ma oc
ii. Search for modeling control results, GET /ISAPI/Intelligent/FDLib/manualModelingRangeTask ;
up
iii. Get modeling progress status, GET /ISAPI/Intelligent/FDLib/manualModeling/progressState .
co gr

5. (Optional) Manage data in the face picture library. You can search, edit, and delete data in the face picture library.
i. Search for face picture data: POST /ISAPI/Intelligent/FDLib/FDSearch ;
es a@

ii. Edit face picture data: PUT /ISAPI/Intelligent/FDLib/FDModify?format=json , it is for editing data of
Fr rc

imported pictures in binary format;


y ema

iii. Edit face picture data in the library: PUT /ISAPI/Intelligent/FDLib/FDSearch?format=json&FDID=


<FDID>&FPID=<FPID>&faceLibType=<faceLibType> , it is for editing data of imported pictures in URL format;
iv. Delete face picture data in the library: PUT /ISAPI/Intelligent/FDLib/FDSearch/Delete?format=json&FDID=
os fr

<FDID>&faceLibType=<FDType> .
ad on

8.1.1.3 Exception Handling


el .c

8.1.1.3.1 Error Code


ez

statusCode statusString subStatusCode errorCode errorMsg Description Remarks


en

1 OK ok 0x00000001
im
ng

Not enough
2 Device Busy noMemory 0x20000001
Aj

memory.
Co

Invalid Not
4 notSupport 0x40000001
Operation supported.
Face picture
Invalid library
4 faceLibDiskFull 0x400020F4
Operation storage
media is full.
The face
Invalid picture
4 faceLibraryIDNotExis 0x400020FD
Operation library does
not exist.
The face
picture
picture
Invalid
4 faceLibInitializing 0x40002136 library is
Operation
initializing.
Please wait.
Face picture
Invalid
4 notMatchFacelib 0x4000a004 library is not
Operation
matched.
Face picture
Invalid library with

m
4 existSameNameFacelib 0x4000a00a

co
Operation duplicate
name exists.

a.
Deleting the

C. arc
Invalid face picture
4 delFacelibFailed 0x4000a00b
Operation library

s, em
failed.

A
no fr
Editing the
Invalid face picture

ri on
4 modifyFacelibFailed 0x4000a00c
Operation library
failed.
Ma oc Creating a
up
Invalid face picture
4 createFacelibFailed 0x4000a00d
co gr

Operation library
failed.
es a@

The face
Fr rc

Invalid picture
4 facelibAlreadyUsed 0x4000a010
y ema

Operation library has


been used.
os fr

Database
version of
ad on

Invalid
6 faceLibraryDatabaseError 0x60000032 face picture
Content
el .c

library
mismatch.
ez

Invalid Face picture


en

6 faceLibraryError 0x60000034
Content library error.
im

Multiple
ng
Aj

faces are
recognized
Co

in the
Invalid
6 multipleFaceObjectError 0x60000035 pictures to
Content
be imported
into the face
picture
library.
Importing
Invalid
6 faceLibPicImportingError 0x6000003A picture into
Content
library...
No data
Invalid found in
6 faceLibraryNoData 0x60000069
Content face picture
library.
There is no
data to be
Invalid modeled in
6 NoDataForModelingError 0x6000006B
Content the face
picture
library.
Duplicate ID

m
Invalid of custom

co
6 customFaceLibIDRepeat 0x6000006C
Content face picture
library.

a.
Deleting

C. arc
original
customized

s, em
face picture

A
no fr
library data...
The upper
Invalid

ri on
6 customFaceDataDeleteing 0x600000A1 level cannot
Content
duplicate

Ma oc the
up
customized
face picture
co gr

library of
es a@

this ID.
Fr rc

Importing
s

face picture
y ema

Invalid
6 analysisEnginesFacelibImporting 0x60001005 library to
Content
analysis
os fr

engine...
ad on

Processing
Invalid
6 facelibDataProcessing 0x6000100b face picture
el .c

Content
library data.
ez

Customized
tag for face
en

Invalid picture
6 personInfoExtendValueIsTooLong 0x60001083
im

Content library
ng

exceeded
Aj

limit.
Co

Customized
tag for face
picture
Invalid
6 personInfoExtendValueContainsInvalidChar 0x60001084 library
Content
contains
invalid
character(s).

8.1.1.4 Message Example


Import face pictures to face picture library in binary format and automatically perform modeling, POST
/ISAPI/Intelligent/FDLib/pictureUpload :
POST http://10.16.96.29/ISAPI/Intelligent/FDLib/pictureUpload HTTP/1.1
If-Modified-Since: 0
Accept: */*
X-Requested-With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=---------------------------7e27010d1dba
Referer: http://10.16.96.29/doc/page/config.asp
Accept-Language: zh-CN
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Connection: Keep-Alive
Content-Length: 903330
DNT: 1
Host: 10.16.96.29
Pragma: no-cache

m
Cookie: language=zh; WebSession=48b693ca2b7301e3119d; sdMarkMenu=14%3AfaceSnapLib; sdMarkTab_1_0=0%3AsettingBasic

co
-----------------------------7e27010d1dba
Content-Disposition: form-data; name="PictureUploadData"

a.
<?xml version='1.0' encoding='UTF-8'?
><PictureUploadData><FDID>55869AFEA1E840958120C97054720372</FDID><FaceAppendData><name>20171222103007395_2</name></FaceAppendData></PictureUploadData>

C. arc
-----------------------------7e27010d1dba
Content-Disposition: form-data; name="importImage"; filename="20171222103007395_2.jpeg"
Content-Type: image/jpeg

s, em
【Picture data in binary format】
-----------------------------7e27010d1dba--

A
no fr
ri on
9 Video Recognition
9.1 Face Picture Library Management Ma oc
up
co gr

9.1.1. Search via Picture Comparison in Face Capture Library


es a@

9.1.1.1 Introduction to the Function


Fr rc

Picture comparison with captured picture library


s

Scene application: Search for similar person in face picture library, which can be used for identity confirmation.
y ema

9.1.1.2 API Calling Flow


os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@

1. Check whether the device supports searching by picture synchronously.


Fr rc

Get the capability of searching via picture comparison: GET /ISAPI/Intelligent/FDLib/capabilities?


y ema

format=json . If the node isSuportFSSearchByPic is returned and its value is true , it indicates that searching via
picture comparison synchronously is supported.
os fr

Note: For some devices supporting searching via picture comparison synchronously, the API for getting the
ad on

capability is invalid, you can call POST /ISAPI/Intelligent/FDLib/searchByPic?format=json directly.


el .c

2. Three methods are supported when searching picture.


ez

By URL:
en

Based on the picture storage server, picture can be uploaded and you can get the picture URL to download the
im

picture file via the URL.


ng
Aj

By model data:
Co

Get face picture capability: GET /ISAPI/SDT/Face/pictureAnalysis/capabilities ;


Analyze (model) face pictures: POSTT /ISAPI/SDT/Face/pictureAnalysis ; Return picture modeling data:
targetModelData .

By binary picture:
Read binary picture files.
3. Submit synced face picture library to use picture to search picture
Search via picture comparison in face capture library: POST /ISAPI/Intelligent/FDLib/searchByPic?
format=json ;
Note: Input parameter node dataType include three modes. Picture URL corresponds to faceURL , model data
corresponds to targetModelData , binary data mode is in form of form, and its JSON data is followed by binary
picture data.
The request message example of binary picture data is as follows:

POST /ISAPI/Intelligent/FDLib/searchByPic?format=json
Host: device_ip:port
Accept-Language: zh-cn
Date: YourDate
Content-Type: multipart/form-data;boundary=<frontier>
Content-Length: text_length

m
Connection: keep-alive

co
--<frontier>
Content-Disposition: form-data; name=""

a.
Content-Type: application/json

[JSON message]

C. arc
--<frontier>
Content-Disposition: form-data; name="Picture_Name"
Content-Length: image_length
Content-Type: image/jpeg

s, em
[Picture data]

A
no fr
--<frontier>--

ri on
10 Audio (General)
Ma oc
up
10.1 Real-Time Audio Streaming
co gr

10.1.1 Introduction to the Function


es a@

The client can get real-time audio data via RTSP to listen to the device.
Fr rc

10.1.2 API Calling Flow


y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Get system capabilities: GET /ISAPI/System/capabilities . If isSupportRTSPAudio is returned and its value is true,
then the device supports real-time audio streaming via RTSP.
2. Get audio streaming capabilities: GET /ISAPI/System/Audio/capabilities . If isSupportRTSPAudio is returned
and its value is true, the device supports RTSP real-time audio streaming.
3. (Optional) Send an RTSP OPTION command to get RTSP methods supported by the device: OPTION rtsp://IP
address/ISAPI/Streaming/audio/<audioID> RTSP/1.0 .

4. Send an RTSP DESCRIBE command: DESCRIBE rtsp://IP address/ISAPI/Streaming/audio/<audioID> RTSP/1.0 .


Digest-MD5 authentication is completed in this step.
5. Use the trackID parsed from SDP information to set RTSP playing parameters. trackID=1 indicates audio.
5. Use the trackID parsed from SDP information to set RTSP playing parameters. trackID=1 indicates audio.
6. Send an RTSP PLAY command: PLAY rtsp://IP address/ISAPI/Streaming/audio/<audioID> RTSP/1.0 , and the
device starts to push audio stream.
7. Receive the RTP packet sent by the device. Divided RTP packets should be assembled on the client before being
parsed.
8. Send an RTSP TEARDOWN command to stop streaming.
Note: <audioID> represents audio channel No.

m
co
10.1.3 Message Example

a.
10.1.3.1 Send an RTSP OPTION Request

C. arc
OPTIONS rtsp://10.17.114.136/ISAPI/Streaming/audio/1 RTSP/1.0
CSeq: 0

s, em
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)

A
no fr
Response from the device

ri on
RTSP/1.0 200 OK
CSeq: 0

Ma oc
Public: OPTIONS, DESCRIBE, PLAY, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER
up
10.1.3.2 Send an RTSP DESCRIBE Request
co gr
es a@

DESCRIBE rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1 RTSP/1.0


CSeq:1
Accept:application/sdp
Fr rc

User-Agent:NKPlayer-1.00.00.081112
y ema

The server responds that an authentication is required.


os fr

RTSP/1.0 401 Unauthorized


CSeq: 1
ad on

WWW-Authenticate: Digest realm="3521781c29acb312330dd668", nonce="026019333", algorithm="MD5"


el .c

The client resends an RTSP DESCRIBE request with the authentication information.
ez

DESCRIBE rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1 RTSP/1.0


en

CSeq:2
Accept:application/sdp
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1",
im

response="76a2c9c5b8edbd49838013cf1cf27941"
User-Agent:NKPlayer-1.00.00.081112
ng
Aj
Co

The device responds with SDP information.


RTSP/1.0 200 OK
CSeq: 2
Content-Type: application/sdp
Content-Length: 571
Date: Tue, 17 Nov 2020 02:09:45 GMT

v=0
o=- 1633703084091356 1633703084091356 IN IP4 10.17.114.136
s=Media Presentation
e=NONE
b=AS:5100
t=0 0
a=control:rtsp://10.17.114.136/ISAPI/Streaming/audio/1/
m=audio 0 RTP/AVP 8

m
c=IN IP4 0.0.0.0
b=AS:5000

co
a=recvonly
a=x-dimensions:2560,1440

a.
m=audio 0 RTP/AVP 8
c=IN IP4 0.0.0.0
b=AS:50

C. arc
a=recvonly
a=control:rtsp://10.17.114.136/ISAPI/Streaming/audio/1/trackID=1
a=rtpmap:8 PCMA/8000
a=Media_header:MEDIAINFO=494D4B48010300000400000111710110401F000000FA000000000000000000000000000000000000;

s, em
a=appversion:1.0

A
no fr
10.1.3.3 Send an RTSP SETUP Request

ri on
SETUP rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1/trackID=1 RTSP/1.0

Ma oc
CSeq:3
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1/",
up
response="ff343f5ff82deb028dd9b4932cc44201"
Transport:RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=0
User-Agent:NKPlayer-1.00.00.081112
co gr
es a@

Response from the device


Fr rc

RTSP/1.0 200 OK
Session: 1127293610;timeout=60
y ema

Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=433122aa
CSeq: 3
Accept-Ranges: NPT
Media-Properties: No-Seeking, Time-Progressing, Time-Duration=0
os fr

Date: Tue, 17 Nov 2020 02:09:45 GMT


ad on

10.1.3.4 Send an RTSP PLAY Request


el .c

PLAY rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1 RTSP/1.0


ez

CSeq:4
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1",
en

response="24edf8a6ff3ef767f7c49d1c847200bd"
Session:1127293610;timeout=60
Range:npt=0.000000-0.000000
im

User-Agent:NKPlayer-1.00.00.081112
ng
Aj

The device pushes audio and video streams.


Co

RTSP/1.0 200 OK
Session: 1127293610
CSeq: 4
Date: Tue, 17 Nov 2020 02:09:45 GMT

$. .....d1.w....c....".T....g....).i.........a....7.S..~J............X....X.

10.1.3.5 Send an RTSP TEARDOWN Request


TEARDOWN rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1 RTSP/1.0
CSeq:5
Authorization: Digest username="admin", realm="3521781c29acb312330dd668", nonce="026019333", uri="rtsp://10.21.84.147:554/ISAPI/Streaming/audio/1",
response="24edf8a6ff3ef767f7c49d1c847200bd"
Session:1127293610;timeout=60
Range:npt=0.000000-0.000000
User-Agent:NKPlayer-1.00.00.081112

Response from the device

RTSP/1.0 200 OK
Session: 1127293610

m
CSeq: 5

co
Date: Tue, 17 Nov 2020 02:09:50 GMT

a.
11 Two-Way Audio

C. arc
s, em
11.1 Two-Way Audio

A
no fr
11.1.1 Introduction to the Function

ri on
This function is for the two-way audio between the client and device. When you call the API to implement the two-way
audio, it requires the client to collect and encode the local audios and to decode the device audio data.

Ma oc
Note: Before starting two-way audio, check whether the way of collecting device audio data, audio encoding format,
up
volume, etc., is correct or not. The audio encoding format of the client should be consistent with the device audio
encoding format.
co gr
es a@

11.1.2 API Calling Flow


Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c

1. Get the capability of configuring audio parameters for all two-way audio channels: GET
/ISAPI/System/TwoWayAudio/channels/capabilities . Check whether the device supports two-way audio. If the
ez

HTTP status code 200 OK is returned, then the device supports two-way audio.
en

2. Get the audio parameters of all two-way audio channels: GET /ISAPI/System/TwoWayAudio/channels . Get the No.
im

of two-way audio channel for response and parsing <id> , audio type <audioCompressionType> , frame rate
<audioBitRate> , sampling rate <audioSamplingRate> and so on, to ensure the consistent of audio format during
ng
Aj

the two-way audio process.


Co

3. Set the audio parameters of one two-way audio channel: PUT /ISAPI/System/TwoWayAudio/channels/<audioID> .
This step is optional, and the <audioID> is the channel No. <id> responded and parsed in step 2.
4. Start two-way audio: PUT /ISAPI/System/TwoWayAudio/channels/<audioID>/open .
5. Create an HTTP persistent connection to receive the two-way audio data: GET
/ISAPI/System/TwoWayAudio/channels/<audioID>/audioData .
6. Create an HTTP persistent connection to send the two-way audio data: PUT
/ISAPI/System/TwoWayAudio/channels/<audioID>/audioData .
7. When the two-way audio ends, the client disables the persistent connections in steps 6 and 7 and sends the
message of stopping the two-way audio: PUT /ISAPI/System/TwoWayAudio/channels/<audioID>/close .
Note:
Two-way audio over ISAPI supports digest authentication.
It supports the two-way audio mode or sending only mode (the platform only call PUT
/ISAPI/System/TwoWayAudio/channels/<audioID>/audioData to send the audio data to devices).
The <audioID> in step 3, 4, 5, 6, and 7 is the two-way audio channel No. which starts from 1. It can be parsed from
the <id> in the device response message of the step 2.
The audio type <audioCompressionType> , frame rate <audioBitRate> , and sampling rate <audioSamplingRate>
can be parsed from the device response message of the step 2 for audio playing and collection in the step 5 and 6.
The step 6 and 7 use persistent connections. In the HTTP request headers, you don't need to set Content-Legth ,
but need to set the Connection: keep-alive and Content-Type: application/octet-stream .
When the encoding format of audio data in the step 5 and 6 is AAC/MP2L2/MP3, the audio data length is variable,

m
co
so the frame header should be lengthened by 4 bytes. When the encoding format is
G.722.1/G.711alaw/G.711ulaw/G.726/G.729/G.729a/G.729b/PCM/ADPCM/Opus, the audio data length is fixed,

a.
there is no need to lengthen the frame header. For example, if the content length of a frame of MP3 audio data is
576 bytes and the header length is 4 bytes, the big end data is 0x00000240, the total length is 580 bytes.

C. arc
The damaged audio file in the AC3 format is usually incompatible when using. Currently, the audio algorithm
library does not support this format.

s, em
A
Statistics of audio types with fixed lengths: |Audio Type |Fixed Length|Frame Interval | |---------|-------|---------| |G.722.1

no fr
|80 |40ms | |G.711alaw|160/320|20ms/40ms| |G.711ulaw|160/320|20ms/40ms| |G.726 |80 |40ms | |G.729 |10 |10ms |

ri on
|G.729a |10 |10ms | |G.729b |10 |10ms | |PCM |1920 |None | |ADPCM |80 |20ms | |Opus |32/64 |20ms/40ms|

Ma oc
11.1.3 Exception Handling up
11.1.3.1 Error Codes
co gr

statusCode statusString subStatusCode errorCode errorMsg Description Remarks


es a@

The
operation
Fr rc

is not
y ema

allowed.
Two-way
os fr

Two-way audio Two-way audio audio is


Invalid in in in
4 twoWayAudioInProgressPleaseWait 0x40002068
ad on

Operation progress...Please progress...Please progress.


wait. wait. Please try
el .c

again
ez

after
two-way
en

audio
im

stopped.
ng
Aj
Co

11.1.4 Message Format and Example


11.1.4.1 Receive Two-Way Audio Data

GET /ISAPI/System/TwoWayAudio/channels/1/audioData HTTP/1.1


Host: 10.17.115.128
Connection: keep-alive
Content-Type: application/octet-stream

HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/octet-stream

//The following are the two-way audio data sent by the device.

11.1.4.2 Send Two-Way Audio Data


PUT /ISAPI/System/TwoWayAudio/channels/1/audioData HTTP/1.1
Host: 10.17.115.128
Connection: keep-alive
Content-Type: application/octet-stream

//The following are the two-way audio data sent by the client.

12 Access Control (General)

m
12.1 . Configure Parameters of Stand-Alone Anti-Passback

co
12.1.1 Introduction to the Function

a.
Anti-passback function allows person to pass entrance and exit by specific route. For areas with multiple entrance/exit,

C. arc
person need to authenticate and pass specific doors. Only one time of authentication and passing is allowed for each
door, that is the person need to follow the specific order to pass the doors. Stand-alone anti-passback is designed to

s, em
minimize the misuse or fraudulent use of access credentials such as passing back card to an unauthorized person, or

A
tailed access. It is applicable to exhibitions, scenic spots, or metro entrances where one card one person is required.

no fr
12.1.2 API Calling Flow

ri on
Calling Flow:

Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

ISAPI Protocol Calling Flow:


1. 1. Get the capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportAntiSneakCfg is returned and its value is "true", it indicates that the device supports configuring
parameters of stand-alone anti-passback.
2. Get the parameters of anti-passback configuration: GET /ISAPI/AccessControl/AntiSneakCfg?format=json ; Set
the anti-passing back parameters: PUT /ISAPI/AccessControl/AntiSneakCfg?format=json ; enable the anti-
passback function and the first card reader (first entrance), see details in GET
/ISAPI/AccessControl/AntiSneakCfg/capabilities?format=json .
3. Get the capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportCardReaderAntiSneakCfg is returned and its value is "true", it indicates that the device supports
configuring parameters of card readers.
4. Get the anti-passing back configuration parameters of a specified card reader: GET

m
/ISAPI/AccessControl/CardReaderAntiSneakCfg/<cardReaderID>?format=json ; Set anti-passing back

co
parameters of a card reader: PUT /ISAPI/AccessControl/CardReaderAntiSneakCfg/<cardReaderID>?

a.
format=json ; the node cardReaderID refers to the card reader No. The person's passing route will follow the card
reader No. in the API. Note: the anti-passback route should be closed-loop. Improper configuration will affect

C. arc
normal door opening. For example: card reader 1 -> card reader 2 -> card reader 3. The card reader 1 should be
set after card reader 3, or authentication in card reader 1 after one loop will fail. Get the configuration capability of

s, em
anti-passing back parameters of card readers: GET

A
/ISAPI/AccessControl/CardReaderAntiSneakCfg/capabilities?format=json .

no fr
5. Get the capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node

ri on
isSupportClearAntiSneakCfg is returned and its value is "true", it indicates that the device supports clearing
parameters of anti-passback.
6.
Ma oc
Clear anti-passing back parameters: PUT /ISAPI/AccessControl/ClearAntiSneakCfg?format=json ; Get the
up
capability of clearing anti-passback parameters: GET /ISAPI/AccessControl/ClearAntiSneakCfg/capabilities?
format=json , set the value of antiSneak to false to disable the anti-passback function.
co gr

7. Get the capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node


es a@

isSupportClearAntiSneak is returned and its value is "true", it indicates that the device supports clearing records of
anti-passback.
Fr rc

8. Clear anti-passback records in the device: PUT /ISAPI/AccessControl/ClearAntiSneak?format=json ; It supports


y ema

clearing anti-passback records by person ID. Get the capability of clearing anti-passback records: GET
/ISAPI/AccessControl/ClearAntiSneak/capabilities?format=json .
os fr

Note: clear the historic anti-passback parameters before configuring new parameters.
ad on

12.2 Arming Information


el .c

12.2.1 Introduction to the Function


ez

The device supports getting the arming information, such as the armed device IP and port, arming type, and protocol
en

type.
im

12.2.2 API Calling Flow


ng
Aj

1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
Co

isSupportDeployInfo is returned and its value is "true", it indicates that the device supports getting arming
information.
2. Get arming information capability: GET /ISAPI/AccessControl/DeployInfo/capabilities .
3. Get arming information: GET /ISAPI/AccessControl/DeployInfo .

12.3 Authentication Schedule Management


12.3.1 Introduction to the Function
By calling the following APIs, the entrance&exit time schedule and authentication mode can be applied to the card
reader. An access control terminal is controlled by two card readers. For example: access control terminal 1 is controlled
by entrance card reader 1 and exit card reader 2; access control terminal 2 is controlled by entrance card reader 3 and
exit card reader 4, etc. Card reader n is corresponding to schedule template n.
1 weekly schedule and 4 holiday groups can be added in each schedule template. The priority of holiday schedule is
higher than that of weekly schedule. A weekly schedule can be configured by date of a week and 8 different time
periods of a day. 16 holiday schedules can be added to a holiday group schedule. Each holiday schedule has its start
and end date, and the time period is same in the range (8 time periods can be added). The access control can follow the
schedule template to manage the time of person's permissions.

m
For Person Management of Person and Credential Management, the priority of the authentication method for person is

co
higher than that of the authentication schedule. If the authentication method (the node is userVerifyMode) is applied to

a.
a person, the person can access according to the authentication method for person.

C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr

12.3.2 API Calling Flow


es a@

12.3.2.1 Card Reader's Authentication Schedule Configuration


Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c

The API calling flow is as follows:


ez

1. Check whether the device supports configuring control schedules of card reader authentication mode: GET
/ISAPI/AccessControl/capabilities ; if the node isSupportCardReaderPlan is returned and its value is "true", it
en

indicates that the device supports configuring acontrol schedules of card reader authentication mode (and the
device also supports configuring schedule templates of the card reader authentication mode).
im
ng

2. Set control schedule parameters of card reader authentication mode: [GET/PUT]


Aj

/ISAPI/AccessControl/CardReaderPlan/<cardReaderID>?format=json ; the value of cardReaderID should be the


Co

same as the value of templateNo.


3. If the node isSupportCardReaderPlan is returned and its value is "false", it indicates that the device does not
support configuring control schedules of card reader authentication mode.

12.3.2.2 Authentication Schedule Template Configuration


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c

The API calling flow is as follows:


1. Check whether the device supports configuring schedule templates of the card reader authentication mode: GET
ez

/ISAPI/AccessControl/capabilities ; if the node isSupportVerifyPlanTemplate is returned and its value is "true",


en

it indicates that the device supports configuring schedule templates of the card reader authentication mode (and
the device also supports configuring weekly schedules of the card reader authentication mode).
im

2. Set the schedule template parameters of the card reader authentication mode: [GET/PUT]
ng
Aj

/ISAPI/AccessControl/VerifyPlanTemplate/<planTemplateID>?format=json .
Co

3. If the node isSupportVerifyPlanTemplate is returned and its value is "false", it indicates that the device does not
support configuring schedule templates of the card reader authentication mode.

12.3.2.3 Weekly Authentication Schedule Template Configuration


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c

The API calling flow is as follows:


ez

1. Check whether the device supports configuring weekly schedules of the card reader authentication mode: GET
/ISAPI/AccessControl/capabilities ; if the node isSupportCardRightWeekPlanCfg is returned and its value is
en

"true", it indicates that the device supports configuring weekly schedules of the card reader authentication mode.
im

2. Set the weekly schedule parameters of the card reader authentication mode: [GET/PUT]
ng

/ISAPI/AccessControl/VerifyWeekPlanCfg/<weekPlanID>?format=json .
Aj

3. If the node isSupportVerifyWeekPlanCfg is returned and its value is "false", it indicates that the device does not
Co

support configuring weekly schedules of the card reader authentication mode.

12.3.2.4 Holiday Authentication Group Configuration


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c

The API calling flow is as follows:


ez

1. Check whether the device supports configuring holiday groups of control schedule of card reader authentication
mode: GET /ISAPI/AccessControl/capabilities ; if the node isSupportVerifyHolidayGroupCfg is returned and its
en

value is "true", it indicates that the device supports configuring holiday groups of control schedule of card reader
authentication mode (and the device also supports configuring holiday schedules of card reader authentication
im

mode).
ng
Aj

2. Set holiday group parameters of control schedule of card reader authentication mode: [GET/PUT]
Co

/ISAPI/AccessControl/VerifyHolidayGroupCfg/<holidayGroupID>?format=json .
3. If the node isSupportVerifyHolidayGroupCfg is returned and its value is "false", it indicates that the device does not
support configuring holiday groups of control schedule of card reader authentication mode.

12.3.2.5 Holiday Authentication Schedule Configuration


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c

The API calling flow is as follows:


1. Check whether the device supports configuring holiday schedules of card reader authentication mode: GET
ez

/ISAPI/AccessControl/capabilities ; if the node isSupportVerifyHolidayPlanCfg is returned and its value is


en

"true", it indicates that the device supports configuring holiday schedules of card reader authentication mode.
2. Set holiday schedule parameters of card reader authentication mode: [GET/PUT]
im

/ISAPI/AccessControl/VerifyHolidayPlanCfg/<holidayPlanID>?format=json .
ng
Aj

3. If the node isSupportVerifyHolidayPlanCfg is returned and its value is "false", it indicates that the device does not
Co

support configuring holiday schedules of card reader authentication mode.


12.4 Authentication via QR Code
12.4.1 Generate QR Code by Platform
12.4.1.1 Introduction to the Function
1. After an access control device is deployed, you should add it to the platform and set the QR code key which will be

m
saved to the database of the platform. Notes: For security, the QR code key should be encrypted before been

co
saved to the platform and the device; if you need to open multiple doors by scanning the QR codes, the

a.
device key of the multiple doors should be the same.

C. arc
2. The platform applies persons' permissions to the device via person-based function. The QR code is linked with
employee No., so the permission of opening a door is decided by whether a person's employee No. is
authenticated.

s, em
3. Before entering the controlled areas, the visitors need to register on the platform. The platform will generate QR

A
no fr
code strings according to the registered information, QR code key, and QR code protocol, for converting QR code
strings to QR code pictures, and sending to visitors' phones.

ri on
4. When the visitors enter the controlled areas, they can scan the QR codes via the devices. Then, the device can get

Ma oc
the encrypted data, decrypt the data by QR code key and protocol, and check whether the door can be opened. If
yes, the door will open; if no, the door will not open and the device will prompt the message "No permission".
up
12.4.1.2 API Calling Flow
co gr

1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
es a@

isSupportQRCodeEncryption is returned and its value is "true", it indicates that the device supports QR code
Fr rc

encryption.
s

2. Get the capability of QR code encryption: GET /ISAPI/AccessControl/QRCodeEncryption/capabilities?


y ema

format=json .
3. Set the parameters of QR code encryption: PUT /ISAPI/AccessControl/QRCodeEncryption?
os fr

format=json&security=<security>&iv=<iv> , the parameters include encryption type, encryption key, and


initialization vector.
ad on

4. Get the related APIs of Person and Credential Management for applying certain persons' permissions to open the
el .c

doors. So the permission of opening a door is decided by whether a person's employee No. is authenticated.
ez

5. After generating QR code strings by Base64 and generating QR code pictures based on QR code strings, the
platform for sending the pictures to visitors' phones. The visitors can access the area after scanning the QR code
en

pictures.
im

12.4.2 Generate QR Code by Device


ng
Aj
Co

12.4.2.1 Introduction to the Function

1. After an access control device is deployed, you can log in to the device via the Web / iVMS-4200 client software,
and set a QR code key for the device (saving the QR code key is not necessary). Notes: to ensure security, the
QR code key should be encrypted before saving to the device; if multiple doors need to be opened via
the QR code, the devices of the multiple doors should be configured a same key.
2. By calling the APIs of person-based functions, the Web / iVMS-4200 client software applies persons' permission to
the device. So the permission of opening a door is decided by whether a person's employee No. is authenticated.

m
co
a.
C. arc
s, em
A
no fr
3. Before visitors enter the controlled areas, the inviters need to upload the visitor information to EZ and apply the
information to the device. The device will generate QR code strings according to the visitor information, QR code

ri on
key, and QR code protocol, and send back to the inviters. The inviters' phones will convert QR code strings to QR
code pictures, and forward the pictures to visitors' phones.
Ma oc
4. When the visitors enter the controlled areas, they can scan the QR codes via the devices. Then, the device can get
up
the encrypted data, decrypt the data by QR code key and protocol, and check whether the door can be opened. If
co gr

yes, the door will open; if no, the door will not open and prompt the message "No permission". Note: for
usability and security, APIs of generating QR codes by the platform are not accessible, only APIs of
es a@

generating QR code by device are provided.


Fr rc

12.4.2.2 API Calling Flow


y ema

1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the nodes
isSupportQRCodeEncryption and isSupportQRCodeInfo are returned and the value is "true", it indicates that the
os fr

device supports QR code encryption and generating QR code.


2. Get the capability of QR code encryption: GET /ISAPI/AccessControl/QRCodeEncryption/capabilities?
ad on

format=json . Get the capability of generating QR code: GET /ISAPI/AccessControl/QRCodeInfo/capabilities?


el .c

format=json .
3. Set the parameters of QR code encryption: PUT /ISAPI/AccessControl/QRCodeEncryption?
ez

format=json&security=<security>&iv=<iv> , the parameters include encryption type, encryption key, and


en

initialization vector.
4. Get the related APIs of Person and Credential Management for applying certain persons' permissions to open the
im

doors. The permission of opening a door will be decided by whether a person's employee No. is authenticated.
ng
Aj

5. Generate QR code strings encoded via base64: POST /ISAPI/AccessControl/QRCodeInfo?format=json&security=


Co

<security>&iv=<iv> ; then the device will send the QR code strings to the phones of the inviters.
6. Inviters' phones convert the QR code strings to QR code pictures, and send to visitors' phones.
7. The visitors can access the area by scanning the QR code pictures in their phones.

12.4.3 Remarks
The device will send AccessControllerEvent (contains QRCodeInfo) for QR code authentication. If the authentication
succeed, the returned event type will be 0x9c, if the authentication failed, the returned event type will be 0x9d.

12.5 Card Management


12.5.1 Introduction to the Function
Card management includes searching, applying, adding, editing, deleting, and collecting cards.
12.5.2 API Calling Flow
12.5.2.1 Check Whether the Device Supports Card Management

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez

Before calling the API for card management, make sure that the device supports card management.
en

1. Check whether the device supports card management: GET /ISAPI/AccessControl/capabilities ; if the node
im

isSupportCardInfo is returned and its value is “true”, it indicates that the device supports card management.
ng

2. Search, apply, add, edit, and delete cards.


Aj

3. If the node isSupportCardInfo is returned and its value is “false”, it indicates that the device does not support card
Co

management.
Note:
Before applying, adding, or editing cards on the device, make sure that the related person information linked to the
person ID has been applied to the device.
The value of the node numberPerPerson returned by calling GET
/ISAPI/AccessControl/CardInfo/capabilities?format=json is the maximum number of cards supported per
person. If the value returned is 255, it indicates that the number of cards per person is unlimited. If the node is not
returned, it indicates that the maximum number of cards can be applied is 5.
Manage cards of different card number lengths by calling [GET/PUT]
/ISAPI/AccessControl/CardVerificationRule?format=json .
Aj
im
Co en
12.5.2.2 Card Search

ng ez
el .c
ad on
os fr
y ema
Fr rc
es a@
co gr
s up
Ma oc
ri on
no fr
s, em
C. arc
A a.
co
m
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The card search function is for searching the number of cards and card information applied to the device.
1. Check whether the device supports card search: GET /ISAPI/AccessControl/CardInfo/capabilities?
format=json ; if the value of the node supportFunction contains “get”, it indicates that the device supports card
search.
2. Search the number of specified persons’ cards: GET /ISAPI/AccessControl/CardInfo/Count?
format=json&employeeNo=<employeeNo> ; the returned value of the node cardNumber is the number of the cards
added to the specified persons.
3. Search the number of all persons’ cards: GET /ISAPI/AccessControl/CardInfo/Count?format=json ; the returned
value of the node cardNumber is the number of the cards added to all persons.

m
4. Search card information: POST /ISAPI/AccessControl/CardInfo/Search?format=json ; the card information is

co
returned by page.
5. If the value of the node supportFunction does not contain “get”, it indicates that the device does not support card

a.
search.

C. arc
Note:
The value of the node maxRecordNum returned by calling GET /ISAPI/AccessControl/CardInfo/capabilities?

s, em
format=json is the maximum number of cards supported by the device.

A
no fr
12.5.2.3 Card Applying

ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng

Card information can be applied to the device via the card applying function. If the card has been added to
Aj

the device, the card information will be edited; if the card has not been added to the device, the card
Co

information will be added to the device.


1. Check whether the device supports card applying: GET /ISAPI/AccessControl/CardInfo/capabilities?
format=json ; if the value of the node supportFunction contains “setUp”, it indicates that the device supports card
applying.
2. Apply card information: PUT /ISAPI/AccessControl/CardInfo/SetUp?format=json .
3. If the value of the node supportFunction does not contain “setUp”, it indicates that the device does not support
card applying.
Note:
Check whether the card has been added to the device via the node cardNo returned after calling the API for card
applying.

12.5.2.4 Card Adding


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng

Card information can be added to the device via the card adding function. If the card has been added to the
Aj

device, the device will report an error; if the card has not been added to the device, the card information will
Co

be added to the device.


1. Check whether the device supports card adding: GET /ISAPI/AccessControl/CardInfo/capabilities?
format=json ; if the value of the node supportFunction contains “post”, it indicates that the device supports card
adding.
2. Add card information: POST /ISAPI/AccessControl/CardInfo/Record?format=json .
3. If the value of the node supportFunction does not contain “post”, it indicates that the device does not support card
adding.
Note:
Check whether the card has been added to the device via the node cardNo returned after calling the API for card
adding.

12.5.2.5 Card Information Editing


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj

Card information on the device can be edited via the card information editing function. If the card has been
Co

added to the device, the card information will be edited; if the card has not been added to the device, the
device will report an error.
1. Check whether the device supports card information editing: GET
/ISAPI/AccessControl/CardInfo/capabilities?format=json ; if the value of the node supportFunction contains
“put”, it indicates that the device supports card information editing.
2. Edit card information: PUT /ISAPI/AccessControl/CardInfo/Modify?format=json .
3. If the value of the node supportFunction does not contain “put”, it indicates that the device does not support card
information editing.
Note:
Check whether the card has been added to the device via the node cardNo returned after calling the API for card
information editing.

12.5.2.6 Card Deleting


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The card information on the device can be deleted via the card deleting function. The device will not report
an error if the card information to be deleted is not added to the device.
1. Check whether the device supports card deleting: GET /ISAPI/AccessControl/CardInfo/capabilities?
format=json ; if the value of the node supportFunction contains “delete”, it indicates that the device supports card
deleting.
2. Delete cards: PUT /ISAPI/AccessControl/CardInfo/Delete?format=json ; if calling succeeded, it indicates that the
device has deleted the cards.
3. If the value of the node supportFunction does not contain “delete”, it indicates that the device does not support
card deleting.

12.5.2.7 Card Collecting


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en

The card collecting function is for collecting the card No., card type, etc.
im
ng

1. Check whether the device supports card collecting: GET /ISAPI/AccessControl/capabilities ; if the node
Aj

isSupportCaptureCardInfo is returned and its value is “true”, it indicates that the device supports card collecting.
Co

2. Collect card information: GET /ISAPI/AccessControl/CaptureCardInfo?format=json .


3. If the node isSupportCaptureCardInfo is returned and its value is “false”, it indicates that the device does not
support card collecting.
12.6 Configure Non-anti-passback Time Period
Non-anti-passback time period: anti-passback is not triggered in the set time period. Application Scenarios: In rush
hour, anti-passback can always happens since the person might follow others in the people flow. Non-anti-passback
can help normal entry&exit in rush hour.

12.6.1 Introduction to the Function


12.6.2 API Calling Flow
Calling Flow:
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
ISAPI Protocol Calling Flow:
1. Get the capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
co gr

isSupportAntiPassbackTimeRange is returned and its value is "true", it indicates that the device supports
es a@

configuring time period of anti-passback.


2. Get time period parameters of non anti-passback: GET /ISAPI/AccessControl/AntiPassback/timeRange?
Fr rc

format=json ; configure time period parameters of non anti-passback: PUT


y ema

/ISAPI/AccessControl/AntiPassback/timeRange?format=json ; it can specify the time period of anti-passback;


Get the capacity of configuring time period of anti-passback: GET
/ISAPI/AccessControl/AntiPassback/timeRange/capabilities?format=json .
os fr
ad on

12.7 Daily Schedule of Voice Prompt


el .c

12.7.1 Introduction to the Function


ez

You can configure TTS texts or audio files of access authentication for daily schedule. The priority of holiday schedule is
en

higher than that of daily schedule. If the current day is in holiday schedule, voice prompt for holiday schedule will be
played; if the current day is not in holiday schedule, voice prompt for daily schedule will be played.
im
ng

12.7.2 API Calling Flow


Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng

ISAPI Protocol Calling Flow: 1.Check whether the device supports daily schedule of voice prompt (get the capability
Aj

of access control): GET /ISAPI/AccessControl/capabilities?format=json ; if the node isSupportTTSText is returned


Co

and its value is "true", it indicates that the device supports daily schedule management of voice prompt; 2.Get the
capability of daily schedule parameters of voice prompt: GET
/ISAPI/AccessControl/Verification/ttsText/capabilities?format=json ; 3.Get and configure daily schedule of
voice prompt: GET/PUT /ISAPI/AccessControl/Verification/ttsText?format=json ;

12.8 Door Control Schedule Management


12.8.1 Introduction to the Function
For doors of access control or floors of elevator control, you can set schedule templates. The schedule template
information include time period and status (remain open, remain closed, sleep, and normal). Configuring door control
schedule is not required. If it is not configured, No device configuration has permission for all the doors by default. The
priority of remote door control is higher than that of door control schedule. The operation of remote door control can
take effect when the door is in the status of remain open/closed, sleep, and normal.
Each schedule template can be linked to one week schedule and four holiday group schedules. Holiday schedule
priority is higher than that of weekly schedule. Weekly schedule can be configured with time periods from Monday to
Sunday, and 8 different time periods are supported each day. Holiday group schedule can be linked to 16 different
holiday schedules. Each holiday schedule can be configured with one start and end date of the holiday, and the access
time period is the same for each day (up to 8 different time periods can be configured). This schedule template is
configured to manage access control permission.

m
co
a.
C. arc
s, em
A
no fr
ri on
12.8.2 API Calling Flow
Ma oc
up
12.8.2.1 Configure Door Control Schedule
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c

The API calling flow is as follow:


1. Check whether the device supports configuring door control schedule: GET /ISAPI/AccessControl/capabilities ;
ez

if the node isSupportDoorStatusPlan is returned and its value is "true", it indicates that the device supports
en

configuring door control schedule (and the device also supports configuring schedule template of door control).
2. Set door control schedule: [GET/PUT] /ISAPI/AccessControl/DoorStatusPlan/<doorID>?format=json .
im

3. If the node isSupportDoorStatusPlan is returned and its value is "false", it indicates that the device does not
ng
Aj

support configuring door control schedule.


Co

12.8.2.2 Configure Door Control Schedule Template


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on

The API calling flow is as follow:


el .c

1. Check whether the device supports configuring door control schedule template:GET
ez

/ISAPI/AccessControl/capabilities ; if the node isSupportDoorStatusPlanTemplate is returned and its value is


en

"true", it indicates that the device supports configuring door control schedule template (and the device should also
supports configuring door status schedule template).
im

2. Get and set parameters of door control schedule template: [GET/PUT]


ng
Aj

/ISAPI/AccessControl/DoorStatusPlanTemplate/<planTemplateID>?format=json .
Co

3. If the node isSupportDoorStatusPlanTemplate is returned and its value is "false", it indicates that the device does
not support configuring door control schedule template.

12.8.2.3 Configure Door Control Weekly Schedule


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on

The API calling flow is as follow:


el .c

1. Check whether the device supports configuring door control weekly schedule: GET
ez

/ISAPI/AccessControl/capabilities ; if the node isSupportDoorStatusWeekPlanCfg is returned and its value is


en

"true", it indicates that the device supports this function.


2. Set parameters of door control weekly schedule: [GET/PUT]
im

/ISAPI/AccessControl/DoorStatusWeekPlanCfg/<weekPlanID>?format=json .
ng
Aj

3. If the node isSupportDoorStatusWeekPlanCfg is returned and its value is "false", it indicates that the device does
Co

not support configuring this function.

12.8.2.4 Configure Door Control Holiday Group


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on

The API calling flow is as follow:


el .c

1. Check whether the device supports configuring door control holiday group: GET
ez

/ISAPI/AccessControl/capabilities ; if the node isSupportDoorStatusHolidayGroupCfg is returned and its value


en

is "true", it indicates that the device supports configuring door control holiday group (and the device also supports
configuring door control holiday schedule).
im

2. Set the holiday group configuration parameters of the door control schedule: [GET/PUT]
ng
Aj

/ISAPI/AccessControl/DoorStatusHolidayGroupCfg/<holidayGroupID>?format=json .
Co

3. If the node isSupportDoorStatusHolidayGroupCfg is returned and its value is "false", it indicates that the device
does not support this function.

12.8.2.5 Configure Door Control Holiday Schedule


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on

The API calling flow is as follow:


el .c

1. Check whether the device supports configuring door control holiday schedule: GET
ez

/ISAPI/AccessControl/capabilities ; if the node isSupportDoorStatusHolidayPlanCfg is returned and its value is


en

"true", it indicates that the device supports this function.


2. Set parameters of door control holiday schedule: [GET/PUT]
im

/ISAPI/AccessControl/DoorStatusHolidayPlanCfg/<holidayPlanID>?format=json .
ng
Aj

3. If the node isSupportDoorStatusHolidayPlanCfg is returned and its value is "false", it indicates that the device does
Co

not support this function.


12.9 Event and Card Linkage Parameters
12.9.1 Introduction to the Function
The device supports linking specific actions when access control events triggered. The linkage actions include event,
card No., MAC address, and employee No. Take event for example, if a person authenticated by the device, the door will
open for the person.

12.9.2 API Calling Flow


12.9.2.1 Configure Parameters of Event and Card Linkage
1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportEventCardLinkageCfg is returned and its value is "true", it indicates that the device supports configuring
the parameters of event and card linkage.
2. Get the configuration capability of the event and card linkage: GET
/ISAPI/AccessControl/EventCardLinkageCfg/capabilities?format=json .

3. Get and set the parameters of event and card linkage: GET|PUT
/ISAPI/AccessControl/EventCardLinkageCfg/<ACEID>?format=json .

m
12.9.2.2 Search for Parameters of Event and Card Linkage

co
1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node

a.
isSupportEventCardLinkageCfgSearch is returned and its value is "true", it indicates that the device supports

C. arc
searching for the parameters of event and card linkage.
2. Get the capability of searching for parameters of event and card linkage: GET

s, em
/ISAPI/AccessControl/EventCardLinkageCfg/search/capabilities?format=json .

A
no fr
3. Search for parameters of event and card linkage: POST /ISAPI/AccessControl/EventCardLinkageCfg/search?
format=json .

ri on
Ma oc
12.9.2.3 Delete Parameters of Specific Event and Card Linkage
up
1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportEventCardLinkageCfgDelete is returned and its value is "true", it indicates that the device supports
co gr

deleting parameters of event and card linkage.


es a@

2. Delete parameters of specific event and card linkage: PUT /ISAPI/AccessControl/EventCardLinkageCfgDelete?


Fr rc

format=json .
s
y ema

12.9.2.4 Get List of Event and Card Linkage ID


1. Call the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
os fr

isSupportEventCardNoList is returned and its value is true, it indicates that the device supports getting events and
the card linkage ID list.
ad on

2. Get the capability of the list of event and card linkage ID: GET
el .c

/ISAPI/AccessControl/EventCardNoList/capabilities?format=json .
ez

3. Get the list of event and card linkage ID: GET /ISAPI/AccessControl/EventCardNoList?format=json .
en

12.9.2.5 Optimize Event


im
ng

1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
Aj

iisSupportEventOptimizationCfg is returned and its value is "true", it indicates that the device supports event
Co

optimization.
2. Get the configuration capability of event optimization: GET
/ISAPI/AccessControl/EventOptimizationCfg/capabilities?format=json .

3. Get the event optimization configuration parameters: GET|PUT /ISAPI/AccessControl/EventOptimizationCfg?


format=json .

12.10 Face Picture Management


12.10.1 Introduction to the Function
Face picture management includes searching, applying, adding, editing, deleting, and collecting face pictures.
12.10.2 API Calling Flow
12.10.2.1 Check Whether the Device Supports Face Picture Management

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez

Before calling the API for face picture management, make sure that the device supports face picture
en

management.
1. Check whether the device supports face picture management: GET /ISAPI/AccessControl/capabilities ; if the
im

node isSupportFDLib is returned and its value is “true”, it indicates that the device supports face picture
ng
Aj

management.
Co

2. Search, apply, add, edit, and delete face pictures.


3. If the node isSupportFDLib is returned and its value is “false”, it indicates that the device does not support face
picture management.
Note:
Before applying, adding, or editing face picture information on the device, make sure that the related person
information linked to the person ID has been applied to the device, and make sure that the device has its face
picture library by calling GET /ISAPI/Intelligent/FDLib?format=json (if the device has no face picture library,
then create the face picture library by calling POST /ISAPI/Intelligent/FDLib?format=json ), and the ID of the
library of face pictures captured in visible light (FDID) is 1.
If the value of the node mode returned by calling GET /ISAPI/AccessControl/FaceRecognizeMode/capabilities?
format=json contains “deepMode”, it indicates that the device supports the deep mode, which compares face
pictures captured in infrared light. For devices which support the deep mode, if the face picture library ID (FDID) is
2, face pictures captured in infrared light will be applied to the face picture library and be used for face picture
comparison; if the face picture library ID (FDID) is 1, face pictures captured in visible light will be applied to the face
picture library and be displayed on the device.
Switch between the deep mode and normal mode: [GET/PUT] /ISAPI/AccessControl/FaceRecognizeMode?
format=json ; the modes can be switched via the node mode.

12.10.2.2 Face Picture Search

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
The face picture search function is for searching the number of face pictures and face picture information
added to the device.

C. arc
1. Check whether the device supports face picture search: GET /ISAPI/Intelligent/FDLib/capabilities?
format=json ; if the value of the node supportFunction contains “get”, it indicates that the device supports face

s, em
picture search.

A
no fr
2. Search the number of face pictures in the specified face picture libraries: GET /ISAPI/Intelligent/FDLib/Count?
format=json&FDID=<FDID>&faceLibType=<faceLibType> ; the returned value of the node recordDataNumber is the

ri on
number of the added face pictures of the specified face picture libraries.

Ma oc
3. Search the number of face pictures in all face picture libraries: GET /ISAPI/Intelligent/FDLib/Count?
format=json ; the returned value of the node recordDataNumber is the number of face pictures in all face picture
up
libraries.
co gr

4. Search face picture information: POST /ISAPI/Intelligent/FDLib/FDSearch?format=json ; the face picture


information is returned by page.
es a@

5. If the value of the node supportFunction does not contain “get”, it indicates that the device does not support face
Fr rc

picture search.
y ema

Note:
The value of the node FDRecordDataMaxNum returned by calling GET /ISAPI/Intelligent/FDLib/capabilities?
os fr

format=json is the maximum number of face pictures supported by the device.


ad on

12.10.2.3 Face Picture Applying


el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en

Face picture information can be applied to the device via the face picture applying function. If the face
im

picture has been added to the device, the face picture information will be edited; if the face picture has not
ng
Aj

been added to the device, the face picture information will be added to the device.
Co

1. Check whether the device supports face picture applying: GET /ISAPI/Intelligent/FDLib/capabilities?
format=json ; if the value of the node supportFunction contains “setUp”, it indicates that the device supports face
picture applying.
2. Apply face picture information: PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json .
3. If the value of the node supportFunction does not contain “setUp”, it indicates that the device does not support face
picture applying.
Note:
Check whether the face picture has been added to the device via the node FPID returned by calling the API for face
picture applying, and link the face picture to the person information via the node FPID in face picture management and
the node employeeNo in person management.

12.10.2.4 Face Picture Adding


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en

Face picture information can be added to the device via the face picture adding function. If the face picture
im

has been added to the device, the device will report an error; if the face picture has not been added to the
ng

device, the face picture information will be added to the device.


Aj
Co

1. Check whether the device supports face picture adding: GET /ISAPI/Intelligent/FDLib/capabilities?
format=json ; if the value of the node supportFunction contains “post”, it indicates that the device supports face
picture adding.
2. Add face picture information: POST /ISAPI/Intelligent/FDLib/FaceDataRecord?format=json .
3. If the value of the node supportFunction does not contain “post”, it indicates that the device does not support face
picture adding.
Note:
Check whether the face picture has been added to the device via the node FPID returned by calling the API for face
picture adding, and link the face picture to the person information via the node FPID in face picture management and
the node employeeNo in person management.

12.10.2.5 Face Picture Information Editing


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng

Face picture information on the device can be edited via the face picture information editing function. If the
Aj

face picture has been added to the device, the face picture information will be edited; if the face picture has
Co

not been added to the device, the device will report an error.
1. Check whether the device supports face picture information editing: GET
/ISAPI/Intelligent/FDLib/capabilities?format=json ; if the value of the node supportFunction contains “put”,
it indicates that the device supports face picture information editing.
2. Edit face picture information: PUT /ISAPI/Intelligent/FDLib/FDModify?format=json .
3. If the value of the node supportFunction does not contain “put”, it indicates that the device does not support face
picture information editing.
Note:
Check whether the face picture has been added to the device via the node FPID returned by calling the API for face
picture information editing, and link the face picture to the person information via the node FPID in face picture
management and the node employeeNo in person management.
12.10.2.6 Face Picture Deleting

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj

The face picture information on the device can be deleted via the face picture deleting function. The device
Co

will not report an error if the face picture to be deleted is not added to the device.
1. Check whether the device supports face picture deleting: GET /ISAPI/Intelligent/FDLib/capabilities?
format=json ; if the value of the node supportFunction contains “delete”, it indicates that the device supports face
picture deleting.
2. Delete face pictures: PUT /ISAPI/Intelligent/FDLib/FDSearch/Delete?format=json&FDID=<FDID>&faceLibType=
<FDType> ; if calling succeeded, it indicates that the device has deleted the face pictures.
3. If the value of the node supportFunction does not contain “delete”, it indicates that the device does not support
face picture deleting.
Note:
All the face picture libraries and the face picture information in the libraries on the device can be deleted by calling
DELETE /ISAPI/Intelligent/FDLib?format=json .
12.10.2.7 Face Picture Collecting

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

Face picture data, face picture quality grades, etc., can be collected via the face picture collecting function.
1. Check whether the device supports face picture collecting: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportCaptureFace is returned and its value is “true”, it indicates that the device supports face picture (captured
in visible light) collecting. If the node isSupportCaptureInfraredFace is returned and its value is “true”, it indicates
that the device supports face picture (captured in infrared light) collecting.
2. Collect face picture information: POST /ISAPI/AccessControl/CaptureFaceData .
If the node captureProgress is returned, and the value is 100, it indicates that the face picture has been collected,
and the binary data or URL of the collected face picture will be parsed.
If the node captureProgress is returned and the value is 0, it indicates that the face picture has not been collected,
and you need to get the progress of face picture collecting.
3. Get the progress of face picture collecting: GET /ISAPI/AccessControl/CaptureFaceData/Progress ; repeatedly
call this API to get the progress of face picture collecting.
Repeatedly call this API until the node captureProgress is returned and its value is 100, which indicates that the
face picture has been collected and the binary data and URL of the face picture will be parsed.
If the value of the node captureProgress is 0 and the value of the isCurRequestOver is true, which indicates that the
face picture collecting failed, stop calling the API.

m
4. If the node isSupportCaptureFace is returned and its value is “false”, it indicates that the device does not support

co
face picture collecting.

a.
12.11 Fingerprint Management

C. arc
12.11.1 Introduction to the Function
Fingerprint management includes searching, applying, deleting, and collecting fingerprints.

s, em
A
12.11.2 API Calling Flow

no fr
ri on
12.11.2.1 Check Whether the Device Supports Fingerprint Management

Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez

Before calling the API for fingerprint management, make sure that the device supports fingerprint
en

management.
im

1. Check whether the device supports fingerprint management: GET /ISAPI/AccessControl/capabilities ; if the
ng

node isSupportFingerPrintCfg is returned and its value is “true”, it indicates that the device supports fingerprint
Aj

management.
Co

2. Search, apply, add, and edit fingerprints.


3. If the node isSupportFingerPrintCfg is returned and its value is “false”, it indicates that the device does not support
fingerprint management.
Note:
Before applying the fingerprint information to the device, make sure that the related person information linked to
the person ID has been applied to the device.
The maximum number of fingerprints that can be applied to the device per person is 10 (the 10 fingerprints of a
person).

12.11.2.2 Fingerprint Search


Aj
im
Co en
ng ez
el .c
ad on
os fr
y ema
Fr rc
es a@
co gr
s up
Ma oc
ri on
no fr
s, em
C. arc
A a.
co
m
The fingerprint search function is for searching the number of fingerprints and fingerprint information
added to the device.
1. Check whether the device supports fingerprint search: GET
/ISAPI/AccessControl/FingerPrintCfg/capabilities?format=json ; if calling succeeded, it indicates that the
device supports fingerprint search.
2. Search the number of the specified persons’ fingerprints: GET /ISAPI/AccessControl/FingerPrint/Count?
format=json&employeeNo=<employeeNo> ; the returned value of the node numberOfFP is the number of the added
fingerprints of the specified persons.
3. Search the number of fingerprints of all persons: GET /ISAPI/AccessControl/FingerPrint/Count?format=json ;

m
the returned value of the node numberOfFP is the number of the added fingerprints of all persons.

co
4. Search fingerprint information: POST /ISAPI/AccessControl/FingerPrintUpload?format=json ; the fingerprint

a.
information is returned by page. If the value of the child node status of the node FingerPrintInfo is “NoFP”, it
indicates that all fingerprint information are returned.

C. arc
5. If calling failed, it indicates that the device does not support fingerprint search.

s, em
Note:

A
no fr
The value of the node fingerPrintCapacity returned by calling GET
/ISAPI/AccessControl/CardReaderCfg/<cardReaderID>?format=json is the maximum number of fingerprints

ri on
supported by the card reader.

Ma oc
The value of the node fingerPrintNum returned by calling GET
up
/ISAPI/AccessControl/CardReaderCfg/<cardReaderID>?format=json is the number of fingerprints added to the
card reader.
co gr

12.11.2.3 Fingerprint Applying


es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng

Fingerprint information can be applied to the device via the fingerprint applying function. If the fingerprint
Aj

has been added to the device, the fingerprint information will be edited; if the fingerprint has not been
Co

added to the device, the fingerprint will be added to the device.


1. Check whether the device supports fingerprint applying: GET
/ISAPI/AccessControl/FingerPrintCfg/capabilities?format=json ; if the node isSupportSetUp is returned and
its value is “true”, it indicates that the device supports fingerprint applying.
2. Apply fingerprint information: POST /ISAPI/AccessControl/FingerPrint/SetUp?format=json .
3. If the node isSupportSetUp is returned and its value is false, it indicates that the device does not support
fingerprint applying.
Note:
Check whether the fingerprint has been added to the device via the nodes employeeNo and fingerPrintID returned after
calling the API for fingerprint applying.

12.11.2.4 Fingerprint Adding


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

Fingerprint information can be added to the device via the fingerprint adding function. If the fingerprint has
been added to the device, the device will report an error; if the fingerprint has not been added to the device,
the fingerprint will be added to the device.
1. Check whether the device supports fingerprint adding: GET
/ISAPI/AccessControl/FingerPrintCfg/capabilities?format=json ; if calling succeeded, it indicates that the
device supports fingerprint adding.
2. Add fingerprint information: POST /ISAPI/AccessControl/FingerPrintDownload?format=json ; if calling
succeeded, it indicates that the device has started to execute fingerprint adding, but it does not indicate that the
device has added the fingerprint.
3. Get the progress of fingerprint adding: GET /ISAPI/AccessControl/FingerPrintProgress?format=json ;
repeatedly call this API to get the progress of fingerprint adding.
4. If calling failed, it indicates that the device does not support fingerprint adding.
Note:
Check whether the fingerprint has been added to the device via the nodes employeeNo and fingerPrintID returned after
calling the API for fingerprint adding.

12.11.2.5 Fingerprint Information Editing

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The fingerprint information on the device can be edited via the fingerprint information editing function. If
the fingerprint has been added to the device, the fingerprint information will be edited; if the fingerprint
has not been added to the device, the device will report an error.
1. Check whether the device supports fingerprint information editing: GET
/ISAPI/AccessControl/FingerPrintCfg/capabilities?format=json ; if calling succeeded, it indicates that the
device supports fingerprint information editing.
2. Edit fingerprint information: POST /ISAPI/AccessControl/FingerPrintModify?format=json .
3. If calling failed, it indicates that the device does not support fingerprint information editing.
Note:
Check whether the fingerprint has been added to the device via the nodes employeeNo and fingerPrintID returned
after calling the API for fingerprint information editing.
When the fingerprint information is edited, only the fingerprint parameters will be edited; the fingerprint data will
not be edited.

12.11.2.6 Fingerprint Deleting

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The fingerprint information on the device can be deleted via the fingerprint deleting function. The device
will not report an error if the fingerprint information to be deleted is not added to the device.
1. Check whether the device supports fingerprint deleting: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportFingerPrintDelete is returned and its value is “true”, it indicates that the device supports fingerprint
deleting.
2. Delete fingerprint information: PUT /ISAPI/AccessControl/FingerPrint/Delete?format=json ; if calling
succeeded, it indicates that the device has started to execute fingerprint deleting, but it does not indicate that the
device has deleted the fingerprints.
3. Get the progress of fingerprint deleting: GET /ISAPI/AccessControl/FingerPrint/DeleteProcess?format=json ;
repeatedly call this API to get the progress of fingerprint deleting.
4. If the node isSupportFingerPrintDelete is returned and its value is “false”, it indicates that the device does not
support fingerprint deleting.

12.11.2.7 Fingerprint Collecting

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The fingerprint collecting function is for collecting the fingerprint data, fingerprint quality, etc.
1. Check whether the device supports fingerprint collecting: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportCaptureFingerPrint is returned and its value is “true”, it indicates that the device supports fingerprint
collecting.
2. Collect fingerprint information: POST /ISAPI/AccessControl/CaptureFingerPrint .
3. If the node isSupportCaptureFingerPrint is returned and its value is “false”, it indicates that the device does not
support fingerprint collecting.
12.12 Holiday Schedule of Voice Prompt
12.12.1 Introduction to the Function
You can configure TTS texts or audio files of access authentication for holiday schedule.

12.12.2 API Calling Flow

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
Aj
im
Co en
ng ez
el .c
ad on
os fr
y ema
Fr rc
es a@
co gr
s up
Ma oc
ri on
no fr
s, em
C. arc
A a.
co
m
ISAPI Protocol Calling Flow: 1.Check whether the device supports holiday schedule of voice prompt (get the
capability of access control): GET /ISAPI/AccessControl/capabilities?format=json ; if the node
isSupportTTSTextHolidayPlan is returned and its value is "true", it indicates that the device supports holiday schedule
management of voice prompt; 2.Get the capability of holiday schedule parameters of voice prompt: GET
/ISAPI/AccessControl/Verification/ttsText/holidayPlan/capabilities?format=json ; 3.Get holiday schedule of
voice prompt: GET /ISAPI/AccessControl/Verification/ttsText/holidayPlan/<holidayPlanID>?format=json ;
configureholiday schedule of voice prompt: PUT
/ISAPI/AccessControl/Verification/ttsText/holidayPlan/<holidayPlanID>?format=json ; delete holiday schedule
of voice prompt: DELETE /ISAPI/AccessControl/Verification/ttsText/holidayPlan/<holidayPlanID>?

m
format=json ; 4.Check whether the device supports searching for holiday schedule of voice prompt (get the capability of

co
access control): GET /ISAPI/AccessControl/capabilities?format=json ; if the node
isSupportTTSTextSearchHolidayPlan is returned and its value is "true", it indicates that the device supports searching for

a.
holiday schedule parameters; 5.Get the capability of searching for holiday schedule parameters of voice prompt: GET

C. arc
/ISAPI/AccessControl/Verification/ttsText/holidayPlan/capabilities?format=json ; 6.Search for holiday
schedule of voice prompt: POST /ISAPI/AccessControl/Verification/ttsText/searchHolidayPlan?format=json ;

s, em
12.13 ID Card Allowlist Management

A
no fr
12.13.1 Introduction to the Function

ri on
The device supports importing, clearing, and verifying the ID card blocklist, which is used for verifying whether the card

Ma oc
holder is in the list, e.g., when people are checking-in to an examination, they can be verified by their ID cards since the
device of each examination hall is applied different list of ID cards.
up
co gr

12.13.2 API Calling Flow


es a@

12.13.2.1 Apply ID Card Allowlist


Fr rc

1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the nodes
s

isSupportExportIDAllowListTemplateByURL, isSupportExportIDAllowListTemplateByBinary, and


y ema

isSupportIDAllowListTask are returned and the value is "true", it indicates that the device supports exporting the ID
card allowlist template in URL, exporting the ID card allowlist template in binary format, and importing the ID card
os fr

allowlist.
2. Get the ID card allowlist template in binary format: GET
ad on

/ISAPI/AccessControl/IDAllowList/ExportTemplateByBinary?format=json ; or get the parameters of the ID card


el .c

allowlist template in URL:GET /ISAPI/AccessControl/IDAllowList/ExportTemplateByURL/capabilities?


format=json , and then get the ID card allowlist template in URL: GET
ez

/ISAPI/AccessControl/IDAllowList/ExportTemplateByURL?format=json .
en

3. Get the parameters of importing the ID card allowlist: GET


/ISAPI/AccessControl/IDAllowList/Task/capabilities?format=json ; and get whether the device supports
im

creating tasks, searching task status, and searching task results, etc.
ng
Aj

4. Create the task of applying the ID card allowlist: POST /ISAPI/AccessControl/IDAllowList/Task?format=json .


Co

5. Search the task status of importing the ID card allowlist: POST


/ISAPI/AccessControl/IDAllowList/SearchTaskProgress?format=json ; the task progress and status will be
returned by the device. Repeatedly calling this API until the value of the node "percent" returns 100%, and the
value of the node "taskExecutionStatus" returns "completed".
6. Search the task results of applying the ID card allowlist: POST
/ISAPI/AccessControl/IDAllowList/SearchTaskResult?format=json&security=<security>&iv=<iv> ;
information such a s name, address, and ID card No. should be encrypted. Note: the API calling flow of
applying ID card allowlist is the same as that of applying ID card blocklist by task.

12.13.2.2 Clear ID Card Blocklist


1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the nodes
isSupportIDAllowListParamCfg is returned and its value is "true", it indicates that the device supports clearing the
ID card allowlist.
2. Clear the ID card allowlist: PUT /ISAPI/AccessControl/IDAllowListClear?format=json .

12.13.2.3 Configure Parameters of ID Card Allowlist:


1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportIDAllowListParamCfg is returned and its value is "true", it indicates that the device supports configuring
the parameters of the ID card allowlist.
2. Get the parameters of applying the ID card allowlist: GET
/ISAPI/AccessControl/IDAllowList/ParamCfg/capabilities?format=json .
3. Get and configure the parameters of the ID card allowlist: GET|PUT

m
/ISAPI/AccessControl/IDAllowList/ParamCfg?format=json .

co
a.
12.14 ID Card Blocklist Management

C. arc
12.14.1 Introduction to the Function
The device supports importing, clearing, and verifying the ID card blocklist, which is used for verifying whether the card

s, em
holder is in the list, e.g., before a person registers in a hotel, his/her ID card need to be checked for verifying if the

A
no fr
person is in the wanted suspect list.

ri on
12.14.2 API Calling Flow
12.14.2.1 Apply ID Card Blocklist
Ma oc
up
12.14.2.1.1 Apply Single ID Card of Blocklist
co gr

1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the nodes
isSupportIDBlackListTemplate and isSupportIDBlackListCfg are returned and the value is "true", it indicates that the
es a@

device supports exporting the ID card blocklist template and applying the ID card blocklist.
Fr rc

2. Get the ID card blocklist template: GET /ISAPI/AccessControl/IDBlackListCfg/template?format=json .


y ema

3. Get the capability of applying ID card blocklist: GET /ISAPI/AccessControl/IDBlackListCfg/capabilities .


4. Apply the ID card blocklist for each ID card: PUT /ISAPI/AccessControl/IDBlackListCfg?security=
<security>&iv=<iv> ; information such a s name, address, and ID card No. should be encrypted.
os fr

12.14.2.1.2 Apply ID Card of Blocklist by Task


ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez

1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the nodes
en

isSupportIDBlackListTemplate and isSupportIDBlackListCfg are returned and the value is "true", it indicates that the
device supports exporting the ID card blocklist template and applying the ID card blocklist.
im

2. Get the ID card blocklist template: GET /ISAPI/AccessControl/IDBlackListCfg/template?format=json .


ng
Aj

3. Get the capability of applying ID card blocklist: GET /ISAPI/AccessControl/IDBlockList/Task/capabilities?


Co

format=json ; get whether the device supports creating tasks, searching task status, and searching task results, etc.
4. Create the task of importing the ID card blocklist: POST /ISAPI/AccessControl/IDBlockList/Task?format=json .
5. Search the task status of importing the ID card blocklist: POST
/ISAPI/AccessControl/IDBlockList/SearchTaskProgress?format=json ; the task progress and status will be
returned by the device. Repeatedly calling this API until the value of the node "percent" returns 100%, and the
value of the node "taskExecutionStatus" returns "completed".
6. Search for the task results of applying the ID card blocklist: POST
/ISAPI/AccessControl/IDBlockList/SearchTaskResult?format=json&security=<security>&iv=<iv> ;
information such a s name, address, and ID card No. should be encrypted.

12.14.2.2 Clear ID Card Blocklist


1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportIDBlackListClear is returned and its value is "true", it indicates that the device supports clearing the ID
card blocklist.
2. Clear the ID card blocklist: PUT /ISAPI/AccessControl/IDBlackListClear?format=json .

12.14.2.3 Configure Parameters of ID Card Blocklist


1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportIDBlackListParamCfg is returned and its value is "true", it indicates that the device supports configuring
the parameters of the ID card blocklist.
2. Get the capability of applying ID card blocklist: GET /ISAPI/AccessControl/IDBlackListParamCfg/capabilities?
format=json .

m
co
3. Get and configure the parameters of the ID card blocklist: GET|PUT /ISAPI/AccessControl/IDBlackListParamCfg?
format=json .

a.
12.15 ID Card Software Decoding

C. arc
12.15.1 Introduction to the Function

s, em
If this function is enabled, the device can get information via the software decoding such as ID card No. and pictures; if

A
no fr
this function is disabled, the device can only get the card serial No.

ri on
12.15.2 API Calling Flow

Ma oc
1. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportIDCardSoftSolutionParams is returned and its value is "true", it indicates that the device supports
up
software decoding ID cards.
co gr

2. Get the parameters of software decoding ID cards: GET


/ISAPI/AccessControl/IDCardMgr/IDCardSoftSolutionParams/capabilities?format=json .
es a@

3. Get and configure the parameters of the software decoding ID cards: GET|PUT
Fr rc

/ISAPI/AccessControl/IDCardMgr/IDCardSoftSolutionParams?format=json .
y ema

12.16 Iris Data Management


os fr

12.16.1 Introduction to the Function


ad on

Iris data management includes searching, applying, adding, editing, deleting, and collecting iris data.
el .c

12.16.2 API Calling Flow


ez

12.16.2.1 Check Whether the Device Supports Iris Data Management


en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on

Before calling the API for iris data management, make sure that the device supports iris data management:
el .c

1. Check whether the device supports iris data management: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportIrisInfo is returned and its value is true, it indicates that the device supports iris data management.
ez

2. Search, apply, add, edit, and delete iris data.


en

3. If the node isSupportIrisInfo is returned and its value is false, it indicates that the device does not support iris data
management.
im
ng

Note:
Aj
Co

Before applying, adding, and editing the iris data on the device, make sure that the related person information
linked to the person ID has been applied to the device.
Data for up to two irises of each person (two eyes of each person) can be applied to the device.

12.16.2.2 Iris Data Search


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The iris data search function is for searching the number of irises and iris information added to the device.
1. Check whether the device supports iris data search: GET /ISAPI/AccessControl/IrisInfo/capabilities?
format=json ; if the node supportFunction is returned, and the value contains “get”, it indicates that the device
supports iris data search.
2. Search the number of irises: GET /ISAPI/AccessControl/IrisInfo/count?format=json ; the value of the node
IrisNumber is the number of added irises on the device.
3. Search iris information: POST /ISAPI/AccessControl/IrisInfo/search?format=json ; the searched iris
information will be returned by page.
4. If the value of the node supportFunction does not contain “get”, it indicates that the device does not support iris
data search.
Note:
The value of the node maxRecordNum returned by calling GET /ISAPI/AccessControl/IrisInfo/capabilities?
format=json is the maximum number of irises supported by the device.

12.16.2.3 Iris Data Applying

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The iris data applying function is for applying iris information to the device. If the iris data has already been
applied to the device, the information about the iris will be edited; if the iris data has not been applied to
the device, the iris information will be added to the device.
1. Check whether the device supports iris data applying: GET /ISAPI/AccessControl/IrisInfo/capabilities?
format=json ; if the node supportFunction is returned and the value contains “setUp”, it indicates that the device
supports iris data applying.
2. Iris Data Applying: PUT /ISAPI/AccessControl/IrisInfo/setup?format=json .
3. If the value of the node supportFunction does not contain “setUp”, it indicates that the device does not support iris
data applying.
Note:
Check whether the iris data have been applied to the device via the nodes employeeNo and id returned by calling the
API for iris data applying.

12.16.2.4 Iris Data Adding

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The iris data adding function is for adding the iris data to the device. If the iris data have already been
added to the device, the device will report an error; if the iris data have not been added to the device, the
iris data will be added to the device.
1. Check whether the device supports iris data adding: GET /ISAPI/AccessControl/IrisInfo/capabilities?
format=json ; if the value of the node supportFunction contains “post”, it indicates that the device supports iris data
applying.
2. Add iris data: POST /ISAPI/AccessControl/IrisInfo/record?format=json .
3. If the value of the node supportFunction does not contain “post”, it indicates that the device does not support iris
data applying.
Note:
Check whether the iris data have been applied to the device via the nodes employeeNo and id returned by calling the
API for iris data adding.

12.16.2.5 Iris Data Editing

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The iris data editing function is for editing the applied iris information on the device. If the iris data have
already been added to the device, the iris information will be edited; if the iris data have not been added to
the device, the device will report an error.
1. Check whether the device supports iris data editing: GET /ISAPI/AccessControl/IrisInfo/capabilities?
format=json ; if the value of the node supportFunction contains “put”, it indicates that the device supports iris data
editing.
2. Edit iris information: PUT /ISAPI/AccessControl/IrisInfo/modify?format=json .
3. If the value of the node supportFunction does not contain “put”, it indicates that the device does not support iris
data editing.
Note:
Check whether the iris data have been applied to the device via the nodes employeeNo and id returned by calling the
API for iris data editing.

12.16.2.6 Iris Data Deleting

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj

The iris data deleting function is for deleting the applied iris information on the device. If the iris data to be
Co

deleted have not been applied to the device, the device will not report an error.
1. Check whether the device supports iris data deleting: GET /ISAPI/AccessControl/IrisInfo/capabilities?
format=json ; if the value of the node supportFunction contains “delete”, it indicates that the device supports iris
data deleting.
2. Delete iris information: PUT /ISAPI/AccessControl/IrisInfo/delete?format=json ; if calling succeeded, it
indicates that the iris information has been deleted.
3. If the value of the node supportFunction does not contain “delete”, it indicates that the device does not support iris
data deleting.

12.16.2.7 Iris Data Collecting


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The iris data collecting function is for collecting iris data and information.
1. Check whether the device supports iris data collecting: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportCaptureIrisData is returned and its value is “true”, it indicates that the device supports iris data collecting.
2. Collect iris information: POST /ISAPI/AccessControl/captureIrisData?format=json ; if calling succeeded, it
indicates that the device has started to execute the collection.
3. Get the progress of iris data collecting: GET /ISAPI/AccessControl/captureIrisData/progress?format=json ;
repeatedly call this API until the value of captureProgress is returned and is 100, which indicates that the collecting
completed.
4. If the node isSupportCaptureIrisData is returned and its value is “false”, it indicates that the device does not
support iris data collecting.
12.17 Multi-Factor Authentication
12.17.1 Introduction to the Function
In some scenarios with higher security levels, you can set rules that the door will only open when different persons
authenticate in the access control point during fixed time.

m
For example, in a bank, a door will only open after two or more persons are authenticated (such as swiping card,

co
authenticated by fingerprint, face picture, iris, etc.). If a door is configured multi-factor authentication, the number
authentication persons, authentication order, and authentication methods should follow the rules.

a.
12.17.2 API Calling Flow

C. arc
12.17.2.1 Group Parameter Configuration

s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The API calling flow is as follow:


1. Check whether the device supports configuring group parameters: GET /ISAPI/AccessControl/capabilities ; if
the node isSupportGroupCfg is returned and its value is "true", it indicates that the device supports configuring
group parameters.
2. Set group parameters: [GET/PUT] /ISAPI/AccessControl/GroupCfg/<groupID>?format=json .
3. If the node isSupportGroupCfg is returned and its value is "false", it indicates that the device does not support
configuring group parameters.

12.17.2.2 Add Person to Group


After configuring the group parameters, the person and group will be linked through ****person management in the
process of person and credential management integration (through the belongGroup field). The corresponding
interface is as follows:
1. Set person information: PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json
2. Add person information: POST /ISAPI/AccessControl/UserInfo/Record?format=json

m
co
3. Edit person information: PUT /ISAPI/AccessControl/UserInfo/Modify?format=json
No more than 4 groups can be linked to one person.

a.
C. arc
12.17.2.3 Multi-Factor Authentication Mode Configuration

s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The API calling flow is as follow:


1. Check whether the device supports configuring multi-factor authentication mode: GET
/ISAPI/AccessControl/capabilities ; if the node isSupportMultiCardCfg is returned and its value is "true", it
indicates that the device supports configuring multi-factor authentication mode (and the device also supports
configuring group parameters).
2. Set multi-factor authentication mode: [GET/PUT] /ISAPI/AccessControl/MultiCardCfg/<doorID>?format=json
3. If the node isSupportVerifyWeekPlanCfg is returned and its value is "false", it indicates that the device does not
support configuring multi-factor authentication mode.
12.18 Person and Credential Management
12.18.1 Introduction to the Function
The person and credential management function is person-based, and is for managing persons, credentials (cards,
fingerprints, face pictures, and iris data), and permission schedules which control the permissions for persons to enter
and exit the controlled areas. Its architecture is shown below.

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
This document mainly introduces the calling flows for person management and credential management (card,
fingerprint, face picture, iris data management). For details about the calling flow for permission schedule management,
co gr

refer to the “Management of Permission Schedules for Persons and Access Points”.
es a@

12.19 Person Management


Fr rc

12.19.1 Introduction to the Function


y ema

Person management includes searching, applying, adding, editing, and deleting persons.
os fr

12.19.2 API Calling Flow


ad on

12.19.2.1 Check Whether the Device Supports Person Management


el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez

Before calling the API for person management, make sure that the device supports person management.
en

1. Check whether the device supports person management: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportUserInfo is returned and its value is true, it indicates that the device supports person management.
im

2. Search, apply, add, and edit persons.


ng
Aj

3. If the node isSupportUserInfo is returned and its value is false, it indicates that the device does not support person
Co

management.
Note:
The person ID (EmployeeNo) is the unique identifier for person and credential management. After calling GET
/ISAPI/AccessControl/capabilities , through the child nodes of EmployeeNoInfo which are employeeNo,
characterType, and isSupportCompress, the maximum string length and character types of the person ID supported by
the device can be checked. Generally, devices support up to 32 bytes and any type of characters. But for access
controllers and distribution-type access control devices, check through the child nodes mentioned above.

12.19.2.2 Person Search


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The person search function is for searching the number of persons and person information added to the
device.
1. Check whether the device supports person search: GET /ISAPI/AccessControl/UserInfo/capabilities?
format=json ; if the value of the node supportFunction contains “get”, it indicates that the device supports person
search.
2. Search the number of persons: GET /ISAPI/AccessControl/UserInfo/Count?format=json ; the returned value of
the node userNumber is the number of the persons added to the device.
3. Search person information: POST /ISAPI/AccessControl/UserInfo/Search?format=json ; the person information
is returned by page.
4. If the value of the node supportFunction does not contain “get”, it indicates that the device does not support
person search.
Note:
The value of the node maxRecordNum returned by calling GET /ISAPI/AccessControl/UserInfo/capabilities?

m
format=json is the maximum number of persons supported by the device.

co
12.19.2.3 Person Applying

a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

Person information can be applied to the device via the person applying function. If the person has been
added to the device, the person information will be edited; if the person has not been added to the device,
the person information will be applied to the device.
1. Check whether the device supports person applying: GET /ISAPI/AccessControl/UserInfo/capabilities?
format=json ; if the value of the node supportFunction contains “setUp”, it indicates that the device supports
person applying.
2. Apply person information: PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json .
3. If the value of the node supportFunction does not contain setUp, it indicates that the device does not support
person applying.
Note:
Check whether the person has been added to the device via the node employeeNo returned after calling the API for
person applying.

m
co
12.19.2.4 Person Adding

a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

Person can be added to the device via the person adding function. If the person has been added to the
device, the device will report an error; if the person has not been added to the device, the person will be
added to the device.
1. Check whether the device supports person adding: GET /ISAPI/AccessControl/UserInfo/capabilities?
format=json ; if the value of the node supportFunction contains “post”, it indicates that the device supports person
adding.
2. Add persons: POST /ISAPI/AccessControl/UserInfo/Record?format=json .
3. If the value of the node supportFunction does not contain “post”, it indicates that the device does not support
person adding.
Note:
Check whether the person has been added to the device via the node employeeNo returned after calling the API for

m
person adding.

co
12.19.2.5 Person Information Editing

a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
Person information added to the device can be edited via the person information editing function. If the
person has been added to the device, the person information will be edited; if the person has not been
added to the device, the device will report an error.
1. Check whether the device supports person information editing: GET
/ISAPI/AccessControl/UserInfo/capabilities?format=json ; if the value of the node supportFunction contains
“put”, it indicates that the device supports person information editing.
2. Edit Person Information: PUT /ISAPI/AccessControl/UserInfo/Modify?format=json .
3. If the value of the node supportFunction does not contain “put”, it indicates that the device does not support
person information editing.

m
co
Note:

a.
Check whether the person has been added to the device via the node employeeNo returned after calling the API for
person information editing.

C. arc
12.19.2.6 Person Deleting

s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

The person added to the device can be deleted via the person deleting function. The device will not report
an error if the person to be deleted is not added to the device.
1. Check whether the device supports person deleting: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportUserInfoDetailDelete is returned and its value is “true”, it indicates that the device supports person
deleting.
2. Delete persons: PUT /ISAPI/AccessControl/UserInfoDetail/Delete?format=json ; if calling succeeded, it
indicates that the device has started to execute person deleting, but it does not indicate that the device has deleted
the person.
3. Get the progress of deleting person information: GET /ISAPI/AccessControl/UserInfoDetail/DeleteProcess ;
repeatedly call this API to get the progress of person deleting.
4. If the node isSupportUserInfoDetailDelete is returned and its value is “false”, it indicates that the device does not
support person deleting.
Note:
When the person is deleted, the information on the credentials (the card, fingerprint, face picture, and iris data) linked
via the person ID will also be deleted.

12.20 Remote Verification


12.20.1 Introduction to the Function

m
For scenes with high-level security/protection requirements, it requires not only the device's local authentication but

co
also the platform's verification before enabling door controlling.

a.
For example, in scenes such as pandemic control and prevention, after completing authentication/temperature
measurement of the person, the device will upload the event to the platform, and the platform will search for the

C. arc
person's recent trip information according to the uploaded information and apply the verification result to the device
for controlling door after confirming the person's trip does not involve risk areas.

s, em
A
12.20.2 API Calling Flow

no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
The API calling flow is as follow:
up
1. Check whether the device supports remote verification: GET /ISAPI/AccessControl/capabilities . If the node
isSupportRemoteCheck is returned and its value is true, it indicates that the device supports remote verification.
co gr

2. Configure verification parameters: [GET/PUT] /ISAPI/AccessControl/AcsCfg?format=json ; configure the


es a@

verification parameters via the nodes including remoteCheckDoorEnabled, checkChannelType, channelIp and
needDeviceCheck.
Fr rc

3. Upload events to be verified: when the node remoteCheck of the following events (AccessControllerEvent/
y ema

IDCardInfoEvent/ QRCodeEvent/ FaceTemperatureMeasurementEvent) is returned and its value is true, it indicates


that this event requires remote verification.
os fr

4. Perform remote verification: PUT /ISAPI/AccessControl/remoteCheck?format=json . Apply remote verification


result.
ad on

5. Remote verification is not supported by this device.


el .c

12.21 Reset Anti-Passback Rule (Additional Function)


ez

12.21.1 Introduction to the Function


en

Anti-passback rules which can be reset:


im

1. Reset by authentication interval. This function will take effect in specific time period after the anti-passbak is
ng

triggered. If the user trigger the function by swiping a card by route, the anti-passback flag will be reset in certain
Aj

time.
Co

2. Reset by time. The anti-passback flag will be reset automatically in certain time.
3. Invalid mode. The resetting rule is disabled.
Application scenarios: The anti-passback function will be help to reduce the cost of manual monitoring. Anti-passback
by time period and by time cannot set at the same time.

12.21.2 API Calling Flow


Calling Flow:
m
co
a.
C. arc
s, em
A
no fr
ri on
ISAPI Protocol Calling Flow: Ma oc
up
1. Get the capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
co gr

isSupportAntiPassbackResetRules is returned and its value is "true", it indicates that the device supports resetting
es a@

rules of anti-passback.
2. Get resetting rules of anti-passback: GET /ISAPI/AccessControl/AntiPassback/resetRules?format=json ;
Fr rc

configure resetting rules of anti-passback: PUT /ISAPI/AccessControl/AntiPassback/resetRules?format=json .


y ema

12.22 Schedules Management of Persons' Access Permission


os fr

12.22.1 Introduction to the Function


ad on

It is required to connect to door permission and schedule template of access permission related to each door before
applying permissions to persons. For applying permissions to persons, see calling flow of Person Management of
el .c

Person and Credential Management. Configuring schedules of persons' access permission is required, or the related
ez

persons cannot access.


en

1 weekly schedule and 4 holiday groups can be added in each schedule template. The priority of holiday schedule is
higher than that of weekly schedule. Weekly schedule can be configured by day of a week and 8 different time period of
im

a day. 16 holiday schedules can be added to a holiday group schedule. Each holiday schedule has its start and end day,
ng

and the time period is same in the holiday range (8 time periods can be added). The access control can follow the
Aj

schedule template to manage person's permissions by time.


Co
12.22.2 API Calling Flow
12.22.2.1 Schedule Template of Persons' Access Permission

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

Calling Flow:
1. Check whether the device supports schedule template configuration of person's permission: GET
/ISAPI/AccessControl/capabilities ; if the node isSupportUserRightPlanTemplate is returned and its value is
"true", it indicates that the device supports schedule template configuration of person's permission (if it supports, it
also supports weekly schedule configuration of persons' permission).
2. Schedule template configuration of persons' permission: [GET/PUT]
/ISAPI/AccessControl/UserRightPlanTemplate/<planTemplateID>?format=json .
3. Configuring schedule template of persons' access permission control for the device is not supported.
12.22.2.2 Weekly Schedule of Persons' Access Permission

m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

Calling Flow:
1. Check whether the device supports weekly schedule configuration of persons' permissions: GET
/ISAPI/AccessControl/capabilities ; if the node isSupportCardRightWeekPlanCfg is returned and its value is
"true", it indicates that the device supports weekly schedule configuration of person's permissions.
2. Weekly schedule configuration of persons' permissions:[GET/PUT]
/ISAPI/AccessControl/UserRightWeekPlanCfg/<weekPlanID>?format=json .
3. Configuring weekly schedule of persons' access permission control for the device is not supported.

12.22.2.3 Holiday Groups of Persons' Access Permission


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj

Calling Flow:
Co

1. Check whether the device supports holiday group configuration of person's permissions: GET
/ISAPI/AccessControl/capabilities ; if the nodeisSupportUserRightHolidayGroupCfg is returned and its value is
"true", it indicates that the device supports holiday group configuration of person's permission (if it supports, it
also supports holiday schedule configuration of persons' permissions).
2. Holiday group configuration of persons' permissions:[GET/PUT]
/ISAPI/AccessControl/UserRightHolidayGroupCfg/<holidayGroupID>?format=json .
3. Configuring holiday groups of persons' access permission control for the device is not supported.

12.22.2.4 Holiday Schedule of Persons' Access Permission


m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

Calling Flow:
1. Check whether the device supports holiday schedule configuration of persons' permissions: GET
/ISAPI/AccessControl/capabilities ; if the node isSupportCardRightHolidayPlanCfg is returned and its value is
"true", it indicates that the device supports holiday schedule configuration of person's permissions.
2. Holiday schedule configuration of persons' permissions:[GET/PUT]
/ISAPI/AccessControl/UserRightHolidayPlanCfg/<holidayPlanID>?format=json .

3. Configuring holiday schedule of persons' access permission control for the device is not supported.
12.23 Search for QR Code Scanning Event
4. Get the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportQRCodeEvent is returned and its value is "true", it indicates that the device supports searching for QR
code scanning events.
5. Get the capability of searching for QR code scanning events: GET
/ISAPI/AccessControl/QRCodeEvent/capabilities?format=json .

6. Search for QR code scanning events: POST /ISAPI/AccessControl/QRCodeEvent?format=json . Notes: the device

m
displays QR code rather than authentication information.

co
12.24 Store and Search for Access Control Event

a.
C. arc
12.24.1 Introduction to the Function
The device supports configuring storage parameters of access control event, searching for access control events, and

s, em
searching for the amount of access control events. There are three storage modes: deleting old events periodically,

A
deleting old events by specified time and overwriting.

no fr
ri on
12.24.2 API Calling Flow

Ma oc
12.24.2.1 Configure Storage Parameters of Access Control Events
up
1. Call the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportEventStorageCfg is returned and its value is "true", it indicates that the device supports configuring the
co gr

storage parameters of access control events.


es a@

2. Get the configuration capability of storing access control events: GET


Fr rc

/ISAPI/AccessControl/AcsEvent/StorageCfg/capabilities?format=json .
y ema

3. Get and set storage parameters of access control events: GET|PUT /ISAPI/AccessControl/AcsEvent/StorageCfg?
format=json .
os fr

12.24.2.2 Search for Access Control Events


ad on

1. Call the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
el .c

isSupportAcsEvent is returned and its value is "true", it indicates that the device supports searching for access
control events.
ez

2. Get the capability of searching for access control events: GET /ISAPI/AccessControl/AcsEvent/capabilities?
en

format=json .
im

3. Search for access control events: POST /ISAPI/AccessControl/AcsEvent?format=json .


ng
Aj
Co

12.24.2.3 Get Total Number of Access Control Events


1. Call the functional capability of access control: GET /ISAPI/AccessControl/capabilities ; if the node
isSupportAcsEventTotalNum is returned and its value is "true", it indicates that the device supports getting the total
number of access control events.
2. Get the capability of getting total number of access control events by specific conditions: GET
/ISAPI/AccessControl/AcsEventTotalNum/capabilities?format=json .

3. Get the total number of access control events by specific conditions: POST
/ISAPI/AccessControl/AcsEventTotalNum?format=json .

13 Video Intercom (General)


13.1 Call Signaling Interaction
13.1.1 Introduction to the Function
After the upper-layer platform or client software starts two-way audio with the device (refer to the API Calling Flow of
Two-Way Audio), once HiCore of the device receives the audio, it will send the voiceTalkEvent to the APK via HEOP
protocol. Once the APK received the event, it will send call signals back to HiCore.
Call Signaling Interaction can also be applied in devices' two-way audio via SIP protocol.
If you need to call a device by a main station which applies new device ID, the main station should be able to call both

m
device ID and new device ID.

co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im

13.1.2 API Calling Flow


ng
Aj

13.1.2.1 Call Signaling Interaction


Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Get the capability of the device: GET /ISAPI/System/capabilities ;


if the node isSupportVoiceTalkEvent is returned and its value is "true", it indicates that the device supports two-
way audio.
2. eventType: voiceTalkEvent;
3. Get the capability of two-way audio: GET /ISAPI/VideoIntercom/capabilities ;
if the node isSupportCallSignal is returned and its value is "true", it indicates that the device supports call
signaling interaction;
4. Get the capability set of call signaling interaction: GET /ISAPI/VideoIntercom/callSignal/capabilities?
format=json ;

5. Configure call signaling interaction: PUT /ISAPI/VideoIntercom/callSignal?format=json .

14 Digital Signage
14.1 Material Management

m
14.1.1 Introduction to the Function

co
Upload static materials to the device.

a.
14.1.2 API Calling Flow

C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1.Get the information release capability: GET /ISAPI/Publish/capabilities ; If isSupportMaterialMgr is returned, it


indicates that the device supports material management. 2.Apply material information: POST
/ISAPI/Publish/MaterialMgr/material ; the material information contains name, description, type, format, etc. The
material index <id> in the input message is required; if the device return material index in the request message, the
returned material index shall prevail; if the device does not return material index, the input material index shall prevail.
3.Get the capability of applying materials in packages: GET /ISAPI/Publish/capabilities , if
isSupportSubPackageUpload is returned, it indicates that the device supports uploading materials in packages; if the
size of the material file are larger than 2 GB, uploading materials in package is recommended. 4.Upload materials: POST
/ISAPI/Publish/MaterialMgr/material/<materialID>/upload ; details about materialID , refer to step 3. 5.Upload
materials in packages: POST/ISAPI/Publish/MaterialMgr/material/<materialID>/upload?format=json ; details about
materialID , refer to step 3. 6.Get the material uploading status: GET
/ISAPI/Publish/MaterialMgr/material/<materialID>/ uploadStatus 。

14.2 Schedule Release


14.2.1 Introduction to the Function
This function allows users to create schedules by combining multiple programs according to the scheduled time or
method (including playing by day, by week, by custom schedule, by loop schedule, by default schedule), and to apply

m
the schedule to the device. After the schedule is applied to the device, the device will play the specified program as

co
scheduled.

a.
14.2.2 API Calling Flow

C. arc
s, em
A
no fr
ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez
en
im
ng
Aj
Co

1. Apply schedule notification to the device: PUT /ISAPI/Publish/ScheduleMgr/release .


2. Apply schedule parameters to inform the device about the program arrangement time: POST
/ISAPI/Publish/ScheduleMgr/playSchedule .

3. The client applies program information to the device for each program, including program parameters, name, type,
etc. POST /ISAPI/Publish/ProgramMgr/program .
etc. POST /ISAPI/Publish/ProgramMgr/program .
4. Apply parameters for each page: POST /ISAPI/Publish/ProgramMgr/program/<programID>/page .
5. The client repeatedly applies material description information to the device. For materials stored in the local
storage: POST /ISAPI/Publish/MaterialMgr/material/<materialID>/upload . For materials stored in the storage
server, apply related material information (such as URL, IP address, etc.) to the information release terminal: POST
/ISAPI/Publish/MaterialMgr/material .

6. Upload the material document: POST /ISAPI/Publish/MaterialMgr/material/<materialID>/upload .

m
15 Zone Alarm

co
a.
15.1 Peripheral Management

C. arc
15.1.1 Peripheral No.

s, em
The peripheral No. is used to specify a certain peripheral (such as detector, network camera, relay, and sounder) when

A
no fr
you perform operations including configuring parameters and upgrading devices. For details about rules, see the
picture below:

ri on
Ma oc
up
co gr
es a@
Fr rc

s
y ema
os fr
ad on
el .c
ez

15.2 Topology of Detectors and Peripherals


en
im

15.2.1 Topology of Detectors


ng
Aj
Co
m
co
a.
C. arc
s, em
A
no fr
ri on
Ma oc
The hybrid security control panel can access detectors in the following ways:
up
1 (access wired detectors via onboard zones), 2 (access pircams via the RS-485 bus), 5 (access 1 to 2 detectors by
connecting the RS-485 bus with e-map fences), 6 (access 1 detector by enabling the function of extending zones for e-
co gr

map fences), 7 (access wireless detectors by connecting the RS-485 bus with R3/RX receivers), 8 (access wired
detectors via multi-channel wired zone modules), 10 (access wired detectors via keypads), 11 (access wired detectors
es a@

via network zone modules)


Fr rc

The wireless security control panel can access detectors in the following ways:
y ema

1 (access wired detectors via onboard transmitters), 3 (access wireless detectors via internal wireless receivers), 4
(access 1 to 2 wired detectors by enabling the function of extending zones for some magnetic contact detectors), 9
os fr

(access wired detectors by connecting wireless receivers with single-channel / multi-channel transmitters)
ad on

15.2.2 Topology of Peripherals


el .c
ez
en
im
ng
Aj
Co
The hybrid security control panel can access peripherals in the following ways:
1 (access keypads via the RS-485 bus), 2 (access wireless cards and keyfobs via keypads), 3 (access wired sounders via
onboard sounder modules), 4 (access wired relays via onboard relay modules), 5 (access wired relays via keypads), 11
(access wireless sounders, single-channel output modules (wireless relays), and keyfobs via the receivers connected to
the RS-485 bus), 12 (access wired relays via the wired output module connected to the RS-485 bus), 13 (access
network cameras by login via the network)

The wireless security control panel can access peripherals in the following ways:
1 (access keypas via wireless network), 3 (access wireless sounders via internal wireless receivers), 4 (access wired

m
relays via onboard transmitters), 6 (access card readers via wireless network), 7 (access repeaters via wireless network),

co
8 (access keyfobs via wireless network), 9 (access wired relays by connecting wireless receivers with single-channel /

a.
multi-channel transmitters), 10 (access wired relays by connecting wireless receivers with wireless output modules), 13
(access network cameras by login via the network)

C. arc
16 API Reference

s, em
A
no fr
16.1 Device Management (General)

ri on
16.1.1 Accessing via Protocol

Ma oc
16.1.1.1 Set the parameters of a specific protocol that supported by device
up
Request URL
co gr

PUT /ISAPI/Security/adminAccesses/<indexID>
es a@

Query Parameter
Fr rc

Parameter Name Parameter Type Description


s
y ema

indexID string --
Request Message
os fr
ad on
el .c
ez
en
im
ng
Aj
Co
<?xml version="1.0" encoding="UTF-8"?>

<AdminAccessProtocol xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--req, object, attr:version{req, string, protocolVersion}-->
<id>
<!--req, string, ID-->1
</id>
<enabled>
<!--opt, bool, whether to enable the function-->true
</enabled>
<protocol>
<!--req, enum, protocol type, subType:string, desc:protocol type-->HTTP
</protocol>
<redirectToHttps>

m
<!--opt, bool, whether to automatically go to HTTPS when connecting to HTTP port and HTTPS is enabled, desc:whether to automatically go to HTTPS when
connecting to HTTP port and HTTPS is enabled-->true

co
</redirectToHttps>
<streamOverTls>

a.
<!--opt, bool, whether to enable encryption of stream, desc:whether to enable encryption of stream-->true
</streamOverTls>
<portNo>

C. arc
<!--req, int, port No., range:[1,65535], desc:port No.-->80
</portNo>
<TLS1_1Enable>
<!--opt, bool, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},

s, em
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true

A
</TLS1_1Enable>

no fr
<TLS1_2Enable>
<!--opt, bool, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},

ri on
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
</TLS1_2Enable>

Ma oc
<TLS1_3Enable>
<!--opt, bool, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},
up
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
</TLS1_3Enable>
</AdminAccessProtocol>
co gr
es a@

Response Message
Fr rc

<?xml version="1.0" encoding="UTF-8"?>


y ema

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, response message, attr:version{ro, req, string, protocolVersion}-->
<requestURL>
<!--ro, req, string, request URL-->null
os fr

</requestURL>
<statusCode>
<!--ro, req, enum, status code, subType:int, desc:0 (OK), 1 (OK), 2 (Device Busy), 3 (Device Error), 4 (Invalid Operation), 5 (Invalid XML Format), 6
ad on

(Invalid XML Content), 7 (Reboot Required)-->0


</statusCode>
el .c

<statusString>
<!--ro, req, enum, status information, subType:string, desc:"OK" (succeeded), "Device Busy", "Device Error", "Invalid Operation", "Invalid XML Format",
"Invalid XML Content", "Reboot" (reboot device)-->OK
ez

</statusString>
<subStatusCode>
<!--ro, req, string, sub status code, which describes the error in details, desc:sub status code, which describes the error in details-->OK
en

</subStatusCode>
</ResponseStatus>
im
ng
Aj

16.1.1.2 Get security parameters of a single access protocol


Co

Request URL
GET /ISAPI/Security/adminAccesses/<indexID>
Query Parameter
Parameter Name Parameter Type Description
indexID string
Request Message
None
Response Message
<?xml version="1.0" encoding="UTF-8"?>

<AdminAccessProtocol xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, attr:version{req, string}-->
<id>
<!--ro, req, string, ID-->1
</id>
<enabled>
<!--ro, opt, bool, "true,false"-->true
</enabled>
<protocol>
<!--ro, req, enum, protocol type, subType:string, desc:protocol type-->HTTP
</protocol>
<redirectToHttps>

m
<!--ro, opt, bool, whether to enable HTTPS redirection, desc:this node is valid when the protocol type is "HTTPS"-->true
</redirectToHttps>

co
<streamOverTls>
<!--ro, opt, bool, whether to enable encryption of stream, desc:this node is valid when the protocol type is "SDK_OVER_TLS"-->true

a.
</streamOverTls>
<portNo>
<!--ro, req, int, Port No., range:[1,65535], desc:Port No.-->80

C. arc
</portNo>
<TLS1_1Enable>
<!--ro, opt, bool, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},

s, em
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
</TLS1_1Enable>

A
<TLS1_2Enable>

no fr
<!--ro, opt, bool, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true

ri on
</TLS1_2Enable>
<TLS1_3Enable>

Ma oc
<!--ro, opt, bool, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},
{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
up
</TLS1_3Enable>
</AdminAccessProtocol>
co gr
es a@

16.1.1.3 Get device protocol capability


Request URL
Fr rc

GET /ISAPI/Security/adminAccesses/capabilities
y ema

Query Parameter
None
os fr

Request Message
ad on

None
el .c

Response Message
ez
en
im
ng
Aj
Co
<?xml version="1.0" encoding="UTF-8"?>

<AdminAccessProtocolList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, array, subType:object, attr:version{req, string, protocolVersion}-->
<AdminAccessProtocol>
<!--ro, req, object-->
<id>
<!--ro, req, string, ID-->test
</id>
<enabled opt="true,false">
<!--ro, opt, bool, whether to enable the function, attr:opt{req, string}-->true
</enabled>
<protocol opt="HTTP,HTTPS,SDK,RTSP,DEV_MANAGE,WebSocket,WebSocketS,SDK_OVER_TLS,MATRIX_GATEWAY,IOT,GB35114,104Proto,SRTP,ModbusTCP">
<!--ro, req, string, HTTPS, attr:opt{req, string}-->GB35114

m
</protocol>
<redirectToHttps opt="true,false">

co
<!--ro, opt, bool, attr:opt{req, string}-->true
</redirectToHttps>

a.
<streamOverTls opt="true,false">
<!--ro, opt, bool, this node is valid when the protocol type is "SDK_OVER_TLS", attr:opt{req, string}-->true
</streamOverTls>

C. arc
<portNo min="1" max="65535" default="8443">
<!--ro, req, int, range:[1,65535], attr:min{req, int},max{req, int},default{opt, int}-->1
</portNo>
<TLS1_1Enable opt="true,false">

s, em
<!--ro, opt, bool, attr:opt{req, string}-->true
</TLS1_1Enable>

A
<TLS1_2Enable opt="true,false">

no fr
<!--ro, opt, bool, attr:opt{req, string}-->true
</TLS1_2Enable>
<TLS1_3Enable opt="true,false">

ri on
<!--ro, opt, bool, attr:opt{req, string}-->true
</TLS1_3Enable>

Ma oc
<TLS1_1SecurityPrompt opt="Only when the video output mode is Panorama, the device supports the VCA functions except Monitoring">
<!--ro, opt, string, attr:opt{req, string}-->Only when the video output mode is Panorama, the device supports the VCA functions except Monitoring
</TLS1_1SecurityPrompt>
up
<connectTime min="1" max="999" def="10">
<!--ro, opt, int, range:[1,999], step:1, unit:min, attr:min{req, int},max{req, int},def{req, int}-->10
</connectTime>
co gr

</AdminAccessProtocol>
</AdminAccessProtocolList>
es a@
Fr rc

16.1.2 Device Basic Information Management


y ema

16.1.2.1 Get configuration capability of the device information parameters


Request URL
os fr

GET /ISAPI/System/deviceInfo/capabilities
ad on

Query Parameter
el .c

None
Request Message
ez

None
en

Response Message
im
ng

<?xml version="1.0" encoding="UTF-8"?>


Aj

<DeviceInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, device information, attr:version{opt, string, protocolVersion}-->
Co

<deviceName min="1" max="128">


<!--ro, req, string, device name, range:[1,128], attr:min{opt, string},max{opt, string}-->test
</deviceName>
<deviceID min="1" max="128">
<!--ro, opt, string, device ID, range:[1,128], attr:min{opt, string},max{opt, string}-->123456
</deviceID>
<deviceDescription min="1" max="128">
<!--ro, opt, string, device description, range:[1,128], attr:min{opt, string},max{opt, string}-->test
</deviceDescription>
<deviceLocation opt="STD-CGI">
<!--ro, opt, string, device location, range:[1,32], attr:opt{opt, string}-->hangzhou
</deviceLocation>
<systemContact opt="STD-CGI">
<!--ro, opt, string, manufacturer, range:[1,32], attr:opt{opt, string}-->test
</systemContact>
<model min="1" max="64">
<!--ro, opt, string, device model, range:[1,64], attr:min{opt, string},max{opt, string}-->iDS-9632NX-I8/X
</model>
<serialNumber min="1" max="48">
<!--ro, opt, string, device serial No., range:[1,48], attr:min{opt, string},max{opt, string}-->iDS-9632NX-I8/X1620181209CCRRC77605411WCVU
</serialNumber>
<macAddress min="1" max="64">
<!--ro, opt, string, MAC address, range:[1,64], attr:min{opt, string},max{opt, string}-->44:47:cc:c8:d9:e4
</macAddress>
</macAddress>
<firmwareVersion min="1" max="64">
<!--ro, opt, string, device firmware version, range:[1,64], attr:min{opt, string},max{opt, string}-->V4.1.40
</firmwareVersion>
<firmwareReleasedDate min="1" max="64">
<!--ro, opt, string, release date of the device firmware version, range:[1,64], attr:min{opt, string},max{opt, string}-->build 181129
</firmwareReleasedDate>
<encoderVersion min="1" max="64">
<!--ro, opt, string, device description, range:[1,64], attr:min{opt, string},max{opt, string}-->V7.3
</encoderVersion>
<encoderReleasedDate min="1" max="64">
<!--ro, opt, string, release date, range:[1,64], attr:min{opt, string},max{opt, string}-->build 20161223
</encoderReleasedDate>
<bootVersion min="1" max="16">
<!--ro, opt, string, BOOT version No., range:[1,16], attr:min{opt, string},max{opt, string}-->V1.3.4
</bootVersion>

m
<bootReleasedDate min="1" max="16">

co
<!--ro, opt, string, release date of boot, range:[1,16], attr:min{opt, string},max{opt, string}-->100316
</bootReleasedDate>
<hardwareVersion min="1" max="16">

a.
<!--ro, opt, string, hardware version, range:[1,16], attr:min{opt, string},max{opt, string}-->0x0
</hardwareVersion>
<subDeviceType

C. arc
opt="accessControlTerminal,attendanceCheckDevice,multiChannelAccessController,personAndIdCardDevice,doorStation,mainStation,swingBarrier,flapBarrier,tripodT
urnstile">
<!--ro, opt, string, attr:opt{req, string}-->accessControlTerminal
</subDeviceType>

s, em
<telecontrolID min="1" max="16">
<!--ro, opt, int, remote control ID, range:[1,16], attr:min{opt, string},max{opt, string}-->8

A
</telecontrolID>

no fr
<subChannelEnabled>
<!--ro, opt, bool, whether to enable two channels-->true

ri on
</subChannelEnabled>
<thrChannelEnabled>
<!--ro, opt, bool, whether to enable three channels-->true

Ma oc
</thrChannelEnabled>
<powerOnMode opt="button,adapter" def="button">
<!--ro, opt, enum, device startup mode, subType:string, attr:opt{opt, string},def{opt, string}, desc:"button", "adapter"-->button
up
</powerOnMode>
<customizedInfo min="0" max="128">
co gr

<!--ro, opt, string, device custom No., range:[0,128], attr:min{req, int},max{req, int}, desc:for baseline devices, returing this node is not required--
>test
</customizedInfo>
es a@

<languageType
opt="chinese,english,spanish,portuguese,italian,french,russian,turkish,greek,czech,brazilianPortuguese,slovenian,swedish,norwegian,romanian,danish,german,po
lish,dutch,hungarian,slovak,serbian,southAmericanSpanish,ukrainian,croatian,irish,bulgarian,hebrew,thai,indonesian,arabic,traditionalChinese,lithuanian,angl
Fr rc

icism,estonian">
<!--ro, opt, string, language type, range:[1,32], attr:opt{opt, string}, desc:"chinese", "english", "spanish", "portuguese", "italian", "french",
y ema

"russian", "turkish", "greek", "czech", "brazilianPortuguese", "slovenian", "swedish", "norwegian", "romanian", "danish", "german", "polish", "dutch",
"hungarian", "slovak", "serbian", "southAmericanSpanish", "ukrainian", "croatian", "irish", "bulgarian", "hebrew", "thai", "indonesian", "arabic",
"traditionalChinese"-->chinese
</languageType>
os fr

<localZoneNum min="0" max="16">


<!--ro, opt, int, number of local zones, range:[0,16], attr:min{opt, string},max{opt, string}-->1
</localZoneNum>
ad on

<alarmOutNum min="0" max="16">


<!--ro, opt, int, number of alarm outputs, range:[0,16], attr:min{opt, string},max{opt, string}-->1
</alarmOutNum>
el .c

<relayNum min="0" max="16">


<!--ro, opt, int, number of local relays, range:[0,16], attr:min{opt, string},max{opt, string}-->1
</relayNum>
ez

<electroLockNum min="0" max="16">


<!--ro, opt, int, number of local electronic locks, range:[0,16], attr:min{opt, string},max{opt, string}-->1
en

</electroLockNum>
<sirenNum min="0" max="16">
<!--ro, opt, int, number of sirens, range:[0,16], attr:min{opt, string},max{opt, string}-->1
im

</sirenNum>
<alarmLamp min="0" max="16">
ng

<!--ro, opt, int, number of strobe lights, range:[0,16], attr:min{opt, string},max{opt, string}-->1
Aj

</alarmLamp>
Co

<RS485Num min="0" max="16">


<!--ro, opt, int, number of local RS-485, range:[0,16], attr:min{opt, string},max{opt, string}-->1
</RS485Num>
<DockStation>
<!--ro, opt, object, dock station information configuration-->
<Platform>
<!--ro, opt, object, platform dock station information configuration-->
<ip>
<!--ro, opt, string, IP address, range:[1,32]-->0.0.0.0
</ip>
<port>
<!--ro, opt, int, port No., range:[1,65535]-->1
</port>
<userName>
<!--ro, req, string, user name, range:[1,32]-->test
</userName>
<password>
<!--ro, req, string, password, range:[1,16]-->test
</password>
</Platform>
<centralStorageBackupEnabled opt="true, false">
<!--ro, opt, bool, whether to enable center storage backup, attr:opt{opt, string}, desc:when it is enabled, the device uploads all data to the center
storage for backup before uploading them to the platform; when it is disabled, the device uploads data to the platform directly, and for those important
data, the platform will apply the file list to the device for center storage (related URI: /ISAPI/ContentMgmt/record/control/centralStorageBackup), then the
data, the platform will apply the file list to the device for center storage (related URI: /ISAPI/ContentMgmt/record/control/centralStorageBackup), then the
device will upload the data with storage URI to the platform-->true
</centralStorageBackupEnabled>
<isSupportManufacturer>
<!--ro, opt, bool, whether it supports configuring third-party manufacturer for the dock station,
desc:/ISAPI/Traffic/dockStation/slot/Manufacturer/capabilities?format=json-->true
</isSupportManufacturer>
</DockStation>
<webVersion>
<!--ro, opt, string, Web version No., range:[1,32]-->1.0
</webVersion>
<deviceRFProgramVersion>
<!--ro, opt, string, device RF program version No., range:[1,32]-->1.0
</deviceRFProgramVersion>
<securityModuleSerialNo>
<!--ro, opt, string, security module serial No., range:[1,48]-->1.0
</securityModuleSerialNo>

m
<securityModuleVersion>

co
<!--ro, opt, string, security module version No., range:[1,32]-->1.0
</securityModuleVersion>
<securityChipVersion>

a.
<!--ro, opt, string, security chip version No., range:[1,32]-->1.0
</securityChipVersion>

C. arc
<securityModuleKeyVersion>
<!--ro, opt, string, security module key version No., range:[1,32]-->1.0
</securityModuleKeyVersion>
<UIDLampRecognition>

s, em
<!--ro, opt, object, recognize the device information by UID-->
<enabled opt="true,false">

A
<!--ro, opt, bool, whether to enable, attr:opt{opt, string}-->true

no fr
</enabled>
</UIDLampRecognition>
<confDeviceIdPrefix opt="true,false">

ri on
<!--ro, opt, bool, whether the meeting uses the device name as its prefix, attr:opt{opt, string}-->true
</confDeviceIdPrefix>

Ma oc
<simpleAlgorithmVersion min="0" max="10">
<!--ro, opt, string, single algorithm version, attr:min{req, int},max{req, int}-->test
</simpleAlgorithmVersion>
up
<bootTime>
<!--ro, opt, datetime, system boot time-->1970-01-01T00:00:00+08:00
</bootTime>
co gr

<isSupportNewVersionDevlanguageSwitch>
<!--ro, opt, bool, whether it supports switching languages for the new protocol version-->true
es a@

</isSupportNewVersionDevlanguageSwitch>
<intelligentAnalysisEngineModel>
<!--ro, opt, string, engine model, range:[1,32]-->K81
Fr rc

</intelligentAnalysisEngineModel>
s

<marketType opt="0,1,2">
<!--ro, opt, enum, market type, subType:int, attr:opt{req, string}, desc:0 (invalid), 1 (distribution type), 2 (industry type)-->0
y ema

</marketType>
<protocolFileURL min="1" max="32">
<!--ro, opt, string, protocol notice URI, attr:min{opt, string},max{opt, string}-->test
</protocolFileURL>
os fr

<recycleRecordEnabled opt="true,false">
<!--ro, opt, bool, whether to enable overwritten recording, attr:opt{req, string}-->false
</recycleRecordEnabled>
ad on

<decordChannelNums>
<!--ro, opt, int, number of decoding channels-->0
el .c

</decordChannelNums>
<VGANums>
<!--ro, opt, int, number of VGA ports-->0
ez

</VGANums>
<USBNums>
<!--ro, opt, int, number of USB ports-->0
en

</USBNums>
<auxoutNums>
im

<!--ro, opt, int, number of auxiliary ports-->0


</auxoutNums>
ng

<expansionBoardVersion min="0" max="32">


Aj

<!--ro, opt, string, extension board version information, range:[0,32], attr:min{req, int},max{req, int}-->test
</expansionBoardVersion>
Co

<initWizzardDisplay opt="true,false">
<!--ro, opt, bool, whether it displays initialization wizard, attr:opt{req, string}, desc:it is only used for displaying configuration of applications
integrated to the wizard, such as local GUI and Hik-Connect app. By default, the value is true; it is false after the wizard is configured on the local GUI-
->true
</initWizzardDisplay>
<beaconID min="0" max="32">
<!--ro, opt, string, device RF program version No., range:[0,32], attr:min{req, int},max{req, int}, desc:by default, it is the current value-->test
</beaconID>
<isResetDeviceLanguage opt="true,false">
<!--ro, opt, bool, whether to reset the language, attr:opt{req, string}, desc:only available for Admin/Installer: true-after the language reset, the
device information will be displayed in the target language on Hik-Connect Mobile Client and Web Client; false-after the language reset, the device
information will be displayed in the original language on Hik-Connect Mobile Client and Web Client-->false
</isResetDeviceLanguage>
<dispalyNum>
<!--ro, opt, int, number of device screens-->2
</dispalyNum>
<bspVersion min="1" max="1">
<!--ro, opt, string, BSP version, attr:min{req, int},max{req, int}-->test
</bspVersion>
<dspVersion min="1" max="1">
<!--ro, opt, string, DSP version, attr:min{req, int},max{req, int}-->test
</dspVersion>
<localUIVersion min="1" max="1">
<!--ro, opt, string, local UI version, attr:min{req, int},max{req, int}-->test
</localUIVersion>
<OPCASubType opt="PDA,pump,column,autoSampler,SOC">
<!--ro, opt, enum, the sub type of optical physical and chemical analyzer, subType:string, attr:opt{req, string}, desc:"detector"; "pump"; "columnOven"
(column oven); "autoSampler" (auto sampler)-->detector
</OPCASubType>
<wiegandOutNum min="0" max="1">
<!--ro, opt, int, number of Wiegand outputs, range:[0,1], attr:min{opt, string},max{opt, string}-->1
</wiegandOutNum>
<ChipVersionInfoList size="6">
<!--ro, opt, object, chip version information list, attr:size{req, int}-->
<ChipVersionInfo>
<!--ro, opt, object, chip version information-->
<ID min="0" max="1">
<!--ro, req, int, chip No., range:[0,1], attr:min{req, int},max{req, int}, desc:the No.s of chips of different types can be duplicate. Users can
distinguish them by chip type and chip No. together-->1

m
</ID>

co
<firmwareVersion min="0" max="64">
<!--ro, req, string, chip firmware version, range:[0,64], attr:min{req, int},max{req, int}-->1.0.0
</firmwareVersion>

a.
<chipName min="0" max="32">
<!--ro, opt, string, range:[0,32], attr:min{req, int},max{req, int}-->test
</chipName>

C. arc
</ChipVersionInfo>
</ChipVersionInfoList>
<personBagLinkAlgoEngineVersion min="0" max="64">
<!--ro, opt, string, engine version of the person & package linkage module, range:[0,64], attr:min{req, int},max{req, int}, desc:this node is for

s, em
analyzer (security inspection)-->1.0.0

A
</personBagLinkAlgoEngineVersion>

no fr
<BIOSVersion min="0" max="16">
<!--ro, opt, string, BIOS version, range:[0,16], attr:min{req, int},max{req, int}-->V1.3.4
</BIOSVersion>

ri on
<contactInformation min="0" max="64">
<!--ro, opt, string, contact information, range:[0,64], attr:min{req, int},max{req, int}-->test
</contactInformation>

Ma oc
<PedestrianWarningModuleVersion>
<!--ro, opt, object, pedestrian warning module information, desc:this node is returned only for pedestrian warning devices-->
up
<pedestrianWarningMCUVersion min="1" max="32">
<!--ro, opt, string, MCU program version, range:[0,16], attr:min{req, int},max{req, int}-->V1.3.4
</pedestrianWarningMCUVersion>
co gr

<pedestrianWarningRadarVersion min="1" max="32">


<!--ro, opt, string, the program version of pedestrian warning radar, range:[0,16], attr:min{req, int},max{req, int}-->V1.3.4
</pedestrianWarningRadarVersion>
es a@

<pedestrianRangingModuleVersion min="1" max="32">


<!--ro, opt, string, the program version of the pedestrian distance measurement module, range:[0,16], attr:min{req, int},max{req, int}-->V1.3.4
</pedestrianRangingModuleVersion>
Fr rc

</PedestrianWarningModuleVersion>
<encryptionModel min="0" max="16">
y ema

<!--ro, opt, string, device encryption model, range:[0,16], attr:min{req, int},max{req, int}, desc:it cannot be modified and is a hexadecimal digit
currently-->test
</encryptionModel>
<UWBVersion min="1" max="32">
os fr

<!--ro, opt, string, UWB version, range:[1,32], attr:min{req, int},max{req, int}-->V1.3.4


</UWBVersion>
<audioBoard>
ad on

<!--ro, opt, object, audio board information-->


<audioBoardModel min="0" max="32">
<!--ro, opt, string, audio board model, range:[0,32], attr:min{req, int},max{req, int}, desc:currently only C8 and R8 are supported-->C8
el .c

</audioBoardModel>
<audioBoardVersion min="0" max="32">
ez

<!--ro, opt, string, audio board version, range:[0,32], attr:min{req, int},max{req, int}-->V1.0.0 build 211210
</audioBoardVersion>
</audioBoard>
en

<materialScanAlgorithmVersion min="0" max="64">


<!--ro, opt, string, material scan algorithm version, range:[0,64], attr:min{req, int},max{req, int}, desc:algorithm version of imaging radar panel for
material scan-->1.0.0
im

</materialScanAlgorithmVersion>
<productionDate>
ng
Aj

<!--ro, opt, date-->2022-04-02


</productionDate>
Co

<wifiModuleMACAddress min="1" max="48">


<!--ro, opt, string, range:[1,48], attr:min{req, int},max{req, int}-->44:47:cc:c8:d9:e4
</wifiModuleMACAddress>
<isSupportExportDeviceFingerFile>
<!--ro, opt, bool-->true
</isSupportExportDeviceFingerFile>
<isSupportPromptMessage>
<!--ro, opt, bool-->true
</isSupportPromptMessage>
<shortSerialNumber min="1" max="9">
<!--ro, opt, string, range:[1,9], attr:min{req, int},max{req, int}-->test
</shortSerialNumber>
<OSCoreVersionInfo>
<!--ro, opt, object-->
<OSCoreVersion min="1" max="32">
<!--ro, req, string, range:[1,32], attr:min{req, int},max{req, int}-->1.0.0
</OSCoreVersion>
<minisysVersion min="1" max="32">
<!--ro, opt, string, range:[1,32], attr:min{req, int},max{req, int}-->1.0.0
</minisysVersion>
<networkServiceVersion min="1" max="32">
<!--ro, opt, string, range:[1,32], attr:min{req, int},max{req, int}-->1.0.0
</networkServiceVersion>
<upgradeServiceVersion min="1" max="32">
<upgradeServiceVersion min="1" max="32">
<!--ro, opt, string, range:[1,32], attr:min{req, int},max{req, int}-->1.0.0
</upgradeServiceVersion>
</OSCoreVersionInfo>
<isSupportExportDeviceIcon>
<!--ro, opt, bool-->true
</isSupportExportDeviceIcon>
<xTransVersion min="1" max="32">
<!--ro, opt, string, range:[1,32], attr:min{req, int},max{req, int}-->1.0.0
</xTransVersion>
</DeviceInfo>

16.1.2.2 Get device information parameters

m
Request URL

co
GET /ISAPI/System/deviceInfo?serialNumber=<serialNumber>

a.
Query Parameter

C. arc
Parameter Name Parameter Type Description
serialNumber string --

s, em
A
Request Message

no fr
None

ri on
Response Message

Ma oc
<?xml version="1.0" encoding="UTF-8"?>
up
<DeviceInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<!--ro, req, object, device information, attr:version{opt, string, protocolVersion}-->
<deviceName>
co gr

<!--ro, req, string, device name, range:[1,128]-->test


</deviceName>
<deviceID>
es a@

<!--ro, req, string, device No., range:[1,128]-->test


</deviceID>
Fr rc

<deviceDescription>
s

<!--ro, opt, string, device description, range:[1,128]-->test


</deviceDescription>
y ema

<deviceLocation>
<!--ro, opt, string, device location, range:[1,128]-->hangzhou
</deviceLocation>
<deviceStatus>
os fr

<!--ro, opt, enum, device status, subType:string, desc:"normal", "abnormal"-->normal


</deviceStatus>
<DetailAbnormalStatus>
ad on

<!--ro, opt, object, error status details, desc:it is valid only when deviceStatus is "abnormal"-->
<hardDiskFull>
el .c

<!--ro, opt, bool, the disk is full-->true


</hardDiskFull>
<hardDiskError>
ez

<!--ro, opt, bool, the disk error-->true


</hardDiskError>
<ethernetBroken>
en

<!--ro, opt, bool, network disconnected-->true


</ethernetBroken>
<ipaddrConflict>
im

<!--ro, opt, bool, IP address is conflicted-->true


ng

</ipaddrConflict>
Aj

<illegalAccess>
<!--ro, opt, bool, illegal access-->true
Co

</illegalAccess>
<recordError>
<!--ro, opt, bool, recording exception-->true
</recordError>
<raidLogicDiskError>
<!--ro, opt, bool, virtual disk exception in the array-->true
</raidLogicDiskError>
<spareWorkDeviceError>
<!--ro, opt, bool, hot spare active device exception-->true
</spareWorkDeviceError>
</DetailAbnormalStatus>
<systemContact>
<!--ro, opt, string, manufacturer, range:[1,32]-->STD-CGI
</systemContact>
<model>
<!--ro, req, string, device model, range:[1,64]-->iDS-9632NX-I8/X
</model>
<serialNumber>
<!--ro, req, string, device serial No., range:[1,48]-->iDS-9632NX-I8/X1620181209CCRRC77605411WCVU
</serialNumber>
<macAddress>
<!--ro, req, string, MAC address, range:[1,64]-->44:47:cc:c8:d9:e4
</macAddress>
<firmwareVersion>
<firmwareVersion>
<!--ro, req, string, device firmware version, range:[1,64]-->V4.1.40
</firmwareVersion>
<firmwareReleasedDate>
<!--ro, opt, string, Firmware Version-->2019-11-01
</firmwareReleasedDate>
<encoderVersion>
<!--ro, opt, string, device encoder version No., range:[1,32]-->V7.3
</encoderVersion>
<encoderReleasedDate>
<!--ro, opt, string, compile date of the device encoder version-->2019-11-02
</encoderReleasedDate>
<bootVersion>
<!--ro, opt, string, boot version, range:[1,16]-->V1.3.4
</bootVersion>
<bootReleasedDate>

m
<!--ro, opt, string, release date of boot-->2019-11-03

co
</bootReleasedDate>
<panelVersion>
<!--ro, opt, string, panel version, range:[1,32]-->V1.0

a.
</panelVersion>
<hardwareVersion>
<!--ro, opt, string, hardware version, range:[1,24]-->0x0

C. arc
</hardwareVersion>
<decoderVersion>
<!--ro, opt, string, device decoder version, range:[1,32]-->V1.0
</decoderVersion>

s, em
<decoderReleasedDate>
<!--ro, opt, string, compile date of the device decoder version-->2019-01-01

A
</decoderReleasedDate>

no fr
<softwareVersion>
<!--ro, opt, string, software version, range:[1,32]-->V1.23

ri on
</softwareVersion>
<capacity>
<!--ro, opt, int, device capacity, range:[1,10240], desc:unit), " MB-->1

Ma oc
</capacity>
<usedCapacity>
<!--ro, opt, int, used capacity of the device, range:[1,10240], desc:unit: MB-->1
up
</usedCapacity>
<subDeviceType>
co gr

<!--ro, opt, enum, device sub type, subType:string, desc:"accessControlTerminal" (access control terminal; it is valid when the value of deviceType is
"ACS"), "attendanceCheckDevice" (attendance check devices; it is valid when the value of deviceType is "ACS"), "multiChannelAccessController" (multi-channel
access controller; it is valid when the value of deviceType is "ACS"), "personAndIdCardDevice" (person and ID card device; it is valid when the value of
es a@

deviceType is "ACS"), "doorStation" (door station; it is valid when the value of deviceType is "VIS"), "indoor" (indoor station; it is valid when the value
of deviceType is "VIS"), "mainStation" (main station; it is valid when the value of deviceType is "VIS"), "dropGate" (swing barrier; it is valid when the
value of deviceType is "PersonnelChannel"), "wingGate" (flap barrier; it is valid when the value of deviceType is "PersonnelChannel"), "threeRollerGate"
Fr rc

(tripod turnstile; it is valid when the value of deviceType is "PersonnelChannel")-->accessControlTerminal


</subDeviceType>
y ema

<telecontrolID>
<!--ro, opt, int, remote control ID, range:[1,255]-->1
</telecontrolID>
<supportBeep>
<!--ro, opt, bool, whether to support buzzer-->true
os fr

</supportBeep>
<supportVideoLoss>
ad on

<!--ro, opt, bool, whether it supports video loss-->true


</supportVideoLoss>
<firmwareVersionInfo>
el .c

<!--ro, opt, string, firmware version information, range:[1,32]-->B-R-H5-0


</firmwareVersionInfo>
<actualFloorNum>
ez

<!--ro, opt, int, actual number of floors, range:[1,128]-->1


</actualFloorNum>
en

<localZoneNum>
<!--ro, opt, int, number of local zones, range:[0,16]-->1
</localZoneNum>
im

<alarmOutNum>
<!--ro, opt, int, number of alarm outputs, range:[0,16]-->1
ng

</alarmOutNum>
Aj

<alarmInNum>
Co

<!--ro, opt, int, number of alarm inputs, range:[0,16]-->1


</alarmInNum>
<distanceResolution>
<!--ro, opt, float, distance resolution, range:[0.000,0.999]-->0.000
</distanceResolution>
<angleResolution>
<!--ro, opt, float, angle resolution, range:[0.000,0.999]-->0.000
</angleResolution>
<speedResolution>
<!--ro, opt, float, speed resolution, range:[0.000,0.999]-->0.000
</speedResolution>
<detectDistance>
<!--ro, opt, float, detection distance, range:[0.000,0.999]-->0.000
</detectDistance>
<relayNum>
<!--ro, opt, int, number of relays (local), range:[0,16]-->1
</relayNum>
<electroLockNum>
<!--ro, opt, int, number of local electronic locks, range:[0,16]-->1
</electroLockNum>
<sirenNum>
<!--ro, opt, int, number of sirens, range:[0,16]-->1
</sirenNum>
<alarmLamp>
<alarmLamp>
<!--ro, opt, int, number of alarm lamps, range:[0,16]-->1
</alarmLamp>
<RS485Num>
<!--ro, opt, int, number of local RS-485, range:[0,16]-->1
</RS485Num>
<radarVersion>
<!--ro, opt, string, radar version, range:[1,32]-->test
</radarVersion>
<cameraModuleVersion>
<!--ro, opt, string, camera module version, range:[1,32]-->test
</cameraModuleVersion>
<mainversion>
<!--ro, opt, int, main version No., range:[1,255]-->1
</mainversion>
<subversion>
<!--ro, opt, int, sub version No., range:[1,255]-->1

m
</subversion>

co
<upgradeversion>
<!--ro, opt, int, updated version No., range:[1,255]-->1
</upgradeversion>

a.
<customizeversion>
<!--ro, opt, int, customized version No., range:[1,255]-->1

C. arc
</customizeversion>
<companyName>
<!--ro, opt, string, manufacturer name, range:[1,32]-->test
</companyName>

s, em
<copyright>
<!--ro, opt, string, copyright Information, range:[1,32]-->test

A
</copyright>

no fr
<systemName>
<!--ro, opt, enum, storage system name, subType:string, desc:"storageManagement" (storage management system), "distributedStorageManagement"
(distributed storage management system)-->storageManagement

ri on
</systemName>
<systemStatus>

Ma oc
<!--ro, opt, enum, system status, subType:string, desc:“configured”, “unConfigured” (not configured)-->configured
</systemStatus>
<isLeaderDevice>
up
<!--ro, opt, bool, whether it is the corresponding device of the resource IP address-->true
</isLeaderDevice>
<clusterVersion>
co gr

<!--ro, opt, string, system cluster version, range:[1,32], desc:this node is valid when the value of isLeaderDevice is true-->test
</clusterVersion>
<centralStorageVersion>
es a@

<!--ro, opt, string, center storage version, range:[1,16]-->test


</centralStorageVersion>
Fr rc

<powerOnMode>
s

<!--ro, opt, enum, startup mode, subType:string, desc:“button” (press button to power on), “adapter” (connect adapter to power on)-->button
</powerOnMode>
y ema

<customizedInfo>
<!--ro, opt, string, customized project No., range:[1,32], desc:no value will be returned if it is baseline device. custom project No. will be returned
if is custom device-->test
</customizedInfo>
os fr

<verificationCode>
<!--ro, opt, string, device verification code-->test
</verificationCode>
ad on

<supportUrl>
<!--ro, opt, string, service portal-->test
el .c

</supportUrl>
<subSerialNumber>
<!--ro, opt, string, sub serial No.-->test
ez

</subSerialNumber>
<languageType opt="chinese,english,spanish,portuguese,italian,french,russian,turkish,greek,czech,brazilianPortuguese">
<!--ro, opt, enum, language type, subType:string, attr:opt{req, string}, desc:"chinese", "english", "spanish", "portuguese", "italian", "french",
en

"russian", "turkish", "greek", "czech", "brazilianPortuguese", "slovenian", "swedish", "norwegian", "romanian", "danish", "german", "polish", "dutch",
"hungarian", "slovak", "serbian", "southAmericanSpanish", "ukrainian", "croatian", "irish", "bulgarian", "hebrew", "thai", "indonesian", "arabic",
im

"traditionalChinese", "lithuanian", "anglicism", "estonian"-->chinese


</languageType>
ng

<DockStation>
Aj

<!--ro, opt, object, dock station information configuration-->


<Platform>
Co

<!--ro, opt, object, platform dock station information configuration-->


<ip>
<!--ro, opt, string, IP address, range:[1,32]-->test
</ip>
<port>
<!--ro, opt, int, communication port, range:[1,65535]-->1
</port>
<userName>
<!--ro, req, string, user name, range:[1,32]-->test
</userName>
</Platform>
<centralStorageBackupEnabled>
<!--ro, opt, bool, whether to enable center storage backup-->true
</centralStorageBackupEnabled>
</DockStation>
<webVersion>
<!--ro, opt, string, Web version No., range:[1,32]-->test
</webVersion>
<deviceRFProgramVersion>
<!--ro, opt, string, device RF program version, range:[1,32]-->test
</deviceRFProgramVersion>
<securityModuleSerialNo>
<!--ro, opt, string, security module serial No., range:[1,32]-->test
</securityModuleSerialNo>
<securityModuleVersion>
<!--ro, opt, string, security module version, range:[1,32]-->test
</securityModuleVersion>
<securityChipVersion>
<!--ro, opt, string, security chip version, range:[1,32]-->test
</securityChipVersion>
<securityModuleKeyVersion>
<!--ro, opt, string, security module key version, range:[1,32]-->test
</securityModuleKeyVersion>
<UIDLampRecognition>
<!--ro, opt, object, recognize the device information by UID-->
<enabled>
<!--ro, opt, bool, whether to enable the function-->true
</enabled>
</UIDLampRecognition>

m
<confDeviceIdPrefix>

co
<!--ro, opt, bool, whether the meeting uses the device name as its prefix-->true
</confDeviceIdPrefix>
<OEMCode>

a.
<!--ro, opt, enum, manufacturer OME code, subType:int, desc:1 (standard device), 0 (neutral device)-->1
</OEMCode>
<simpleAlgorithmVersion>

C. arc
<!--ro, opt, string, single algorithm version, desc:for fire control analyzer, it only supports one recognition algorithm if this node is returned to
the device information-->test
</simpleAlgorithmVersion>
<bootTime>

s, em
<!--ro, opt, datetime, system boot time, desc:ISO8601 time (TD format, local time and time difference)-->1970-01-01T08:00:00+08:00
</bootTime>

A
no fr
<intelligentAnalysisEngineModel>
<!--ro, opt, string, engine model, range:[1,32]-->test
</intelligentAnalysisEngineModel>

ri on
<marketType>
<!--ro, opt, enum, market type, subType:int, desc:0 (invalid), 1 (distribution type), 2 (industry type)-->0
</marketType>

Ma oc
<algorithmVersion>
<!--ro, opt, string, HCNN algorithm version, desc:its Data Dictionary is provided by research institute for matching the algorithm model-->test
</algorithmVersion>
up
<firmware>
<!--ro, opt, string, firmware version, desc:its Data Dictionary is provided by research institute for matching the algorithm model-->test
co gr

</firmware>
<engineList>
<!--ro, opt, object, list of device computing power, desc:it returns engine No. by number of GPU chips-->
es a@

<engine>
<!--ro, opt, int, returned engine No.-->1
</engine>
Fr rc

</engineList>
<platform>
y ema

<!--ro, opt, enum, platform type, subType:int, desc:1 (TX1), 2 (P4), 3 (3559), 4 (3519), 5 (3516)-->1
</platform>
<platformName>
<!--ro, opt, string, the platform where the algorithm runs, desc:"TX1/K81" (NVR), "KT" (data center), "H5" (front-end device), "H7" (front-end device),
os fr

"K82" (NVR), "G3" (front-end device)-->test


</platformName>
<touchScreenVersionInfo>
ad on

<!--ro, opt, string, touch screen module version-->test


</touchScreenVersionInfo>
<protocolFileURL>
el .c

<!--ro, opt, string, protocol notice URI, range:[1,32]-->test


</protocolFileURL>
ez

<recycleRecordEnabled>
<!--ro, opt, bool, whether to enable overwritten recording-->false
</recycleRecordEnabled>
en

<decordChannelNums>
<!--ro, opt, int, number of decoding channels-->0
</decordChannelNums>
im

<VGANums>
<!--ro, opt, int, number of VGA ports-->0
ng

</VGANums>
Aj

<USBNums>
Co

<!--ro, opt, int, number of USB ports-->0


</USBNums>
<auxoutNums>
<!--ro, opt, int, number of auxiliary ports-->0
</auxoutNums>
<expansionBoardVersion>
<!--ro, opt, string, extension board version information, range:[1,32]-->test
</expansionBoardVersion>
<initWizzardDisplay>
<!--ro, opt, bool, whether it displays initialization wizard, desc:by default, the value is true. The status turns to false after the local GUI wizard
completed-->true
</initWizzardDisplay>
<beaconID>
<!--ro, opt, string, device RF program version No., range:[0,32], desc:by default, it is the current value-->test
</beaconID>
<isResetDeviceLanguage>
<!--ro, opt, bool, whether to reset the language, desc:if the value is true, the Hik-Connect app and the Web Client display device information in the
target language; if the value is false, the Hik-Connect app and the Web Client display the original device information-->false
</isResetDeviceLanguage>
<dispalyNum>
<!--ro, opt, int, number of windows-->0
</dispalyNum>
<bspVersion>
<!--ro, opt, string, BSP software version-->test
<!--ro, opt, string, BSP software version-->test
</bspVersion>
<dspVersion>
<!--ro, opt, string, DSP software version-->test
</dspVersion>
<localUIVersion>
<!--ro, opt, string, local UI version-->test
</localUIVersion>
<OPCASubType>
<!--ro, opt, enum, sub type of optical physical and chemical analyzer, subType:string, desc:"pump", "autoSampler" (auto sampler), "detector",
"columnOven" (column oven), "SOC" (gas chromatography)-->detector
</OPCASubType>
<wiegandOutNum>
<!--ro, opt, int, number of Wiegand outputs, range:[0,1]-->1
</wiegandOutNum>
<ChipVersionInfoList>

m
<!--ro, opt, array, chip version information list, subType:object, range:[1,6]-->
<ChipVersionInfo>

co
<!--ro, opt, object, chip version information-->
<ID>

a.
<!--ro, req, int, chip No., range:[0,1], desc:the No.s of chips of different types can be duplicate. Users can distinguish them by chip type and
chip No. together-->1
</ID>

C. arc
<firmwareVersion>
<!--ro, req, string, chip firmware version, range:[0,64]-->1.0.0
</firmwareVersion>
<algorithmVersion>

s, em
<!--ro, opt, string-->1.0.0
</algorithmVersion>

A
<chipName>

no fr
<!--ro, opt, string, chip name, range:[0,32], desc:chip name-->test
</chipName>
</ChipVersionInfo>

ri on
</ChipVersionInfoList>
<personBagLinkAlgoEngineVersion>

Ma oc
<!--ro, opt, string, engine version of the person & package linkage module, range:[0,64], desc:this node is for analyzer (security inspection)-->1.0.0
</personBagLinkAlgoEngineVersion>
<BIOSVersion>
up
<!--ro, opt, string, BIOS version, range:[0,16]-->V1.3.4
</BIOSVersion>
<contactInformation>
co gr

<!--ro, opt, string, contact information, range:[0,64]-->test


</contactInformation>
es a@

<temperatureModuleVersionInfo>
<!--ro, opt, string, temperature measurement component version-->test
</temperatureModuleVersionInfo>
Fr rc

<PedestrianWarningModuleVersion>
<!--ro, opt, object, pedestrian warning module information, desc:this node is returned only for pedestrian warning devices-->
<pedestrianWarningMCUVersion>
y ema

<!--ro, opt, string, MCU program version, range:[0,32]-->V1.3.4


</pedestrianWarningMCUVersion>
<pedestrianWarningRadarVersion>
<!--ro, opt, string, the program version of pedestrian warning radar, range:[0,32]-->V1.3.4
os fr

</pedestrianWarningRadarVersion>
<pedestrianRangingModuleVersion>
ad on

<!--ro, opt, string, the program version of the pedestrian distance measurement module, range:[0,32]-->V1.3.4
</pedestrianRangingModuleVersion>
</PedestrianWarningModuleVersion>
el .c

<encryptionModel>
<!--ro, opt, string, device encryption model, range:[0,16], desc:it cannot be modified and is a hexadecimal digit currently-->test
</encryptionModel>
ez

<UWBVersion>
<!--ro, opt, string, UWB version, range:[1,32]-->V1.3.0
</UWBVersion>
en

<audioBoard>
<!--ro, opt, object, audio board information-->
im

<audioBoardModel>
<!--ro, opt, string, audio board model, range:[0,32], desc:currently only C8 and R8 are supported-->C8
ng

</audioBoardModel>
Aj

<audioBoardVersion>
<!--ro, opt, string, audio board version, range:[0,32]-->V1.0.0 build 211210
Co

</audioBoardVersion>
</audioBoard>
<materialScanAlgorithmVersion>
<!--ro, opt, string, material scanning algorithm version, range:[0,64], desc:material scanning algorithm version-->test
</materialScanAlgorithmVersion>
<regionVersion>
<!--ro, opt, enum, N/A, subType:string, desc:N/A-->basic
</regionVersion>
<productionDate>
<!--ro, opt, date, date of manufacture-->2022-04-02
</productionDate>
<wifiModuleMACAddress>
<!--ro, opt, string, Mac address of Wi-Fi module, range:[1,48]-->44:47:cc:c8:d9:e4
</wifiModuleMACAddress>
<displayInterfaceSize>
<!--ro, opt, float, display interface size, range:[0.0,16.0], unit:in, desc:diagonal length of display interface for video intercom devices-->0
</displayInterfaceSize>
<releaseRegion>
<!--ro, opt, enum, N/A, subType:string, desc:N/A-->China
</releaseRegion>
<shortSerialNumber>
<!--ro, opt, string, short serial No., range:[1,9]-->test
</shortSerialNumber>
<audioVersion>
<!--ro, opt, string, audio version, range:[1,32]-->test
</audioVersion>
<communicationFrequency>
<!--ro, opt, enum, device wireless communication frequency, subType:string, desc:"433MHz", "868MHz"-->433MHz
</communicationFrequency>
<OSCoreVersionInfo>
<!--ro, opt, object, OS/core component version information-->
<OSCoreVersion>
<!--ro, req, string, OS/core component version No., range:[1,32]-->1.0.0
</OSCoreVersion>
<minisysVersion>
<!--ro, opt, string, minisys version No., range:[1,32]-->1.0.0
</minisysVersion>
<networkServiceVersion>
<!--ro, opt, string, network service version No., range:[1,32]-->1.0.0

m
</networkServiceVersion>

co
<upgradeServiceVersion>
<!--ro, opt, string, upgrade service version No., range:[1,32]-->1.0.0
</upgradeServiceVersion>

a.
</OSCoreVersionInfo>
<xTransVersion>
<!--ro, opt, string, version No. of xtrans chip communication component, range:[1,32], desc:this node is for analyzer-->1.0.0

C. arc
</xTransVersion>
<deviceMaintenanceInfoQRCode>
<!--ro, opt, string, range:[0,64]-->http://support.hikvision.com:8085/?QD=02&amp;SN=序列号"
</deviceMaintenanceInfoQRCode>

s, em
<batteryFirmwareVersion>

A
<!--ro, opt, string, range:[1,32]-->1.0.0

no fr
</batteryFirmwareVersion>
<radarVideoMapInfoList>
<!--ro, opt, array, subType:object, range:[1,32]-->

ri on
<radarVideoMapInfo>
<!--ro, opt, object-->
<devIndex>

Ma oc
<!--ro, opt, string, range:[0,64]-->123456789
</devIndex>
up
<radarVideoMapVersion>
<!--ro, opt, string, range:[1,32]-->1.0.0
</radarVideoMapVersion>
co gr

</radarVideoMapInfo>
</radarVideoMapInfoList>
<screenVersionInfo>
es a@

<!--ro, opt, object-->


<screenAndroidOSVersion>
Fr rc

<!--ro, opt, string, range:[1,64]-->1.2.0 build20230101


s

</screenAndroidOSVersion>
<screenAndroidAPPVersion>
y ema

<!--ro, opt, string, range:[1,64]-->1.0.0 build20230101


</screenAndroidAPPVersion>
</screenVersionInfo>
<isSupportBattery>
os fr

<!--ro, opt, bool-->true


</isSupportBattery>
<networkConfigSettingEnabled>
ad on

<!--ro, opt, bool-->true


</networkConfigSettingEnabled>
<ptzVersion>
el .c

<!--ro, opt, string, range:[1,32]-->test


</ptzVersion>
ez

<movementSoftVersion>
<!--ro, opt, string, range:[1,32]-->test
</movementSoftVersion>
en

<movementHardVersion>
<!--ro, opt, string, range:[1,32]-->test
</movementHardVersion>
im

</DeviceInfo>
ng
Aj
Co

16.1.2.3 Set the device information parameters


Request URL
PUT /ISAPI/System/deviceInfo?serialNumber=<serialNumber>
Query Parameter
Parameter Name Parameter Type Description
serialNumber string --
security string --
iv string --
Request Message
<?xml version="1.0" encoding="UTF-8"?>
<DeviceInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<!--ro, req, object, device information, attr:version{opt, string, protocolVersion}-->
<deviceName>
<!--req, string, device name, range:[1,128]-->test
</deviceName>
<deviceID>
<!--req, string, device No., range:[1,128]-->test
</deviceID>
<deviceDescription>
<!--opt, string, device description, range:[1,128]-->test
</deviceDescription>
<deviceLocation>
<!--opt, string, location, range:[1,128]-->hangzhou
</deviceLocation>
<deviceStatus>

m
<!--ro, opt, enum, device status, subType:string, desc:"normal", "abnormal"-->normal

co
</deviceStatus>
<DetailAbnormalStatus>
<!--ro, opt, object, error status details,it is valid only when deviceStatus is "abnormal", desc:it is valid only when deviceStatus is abnormal-->

a.
<hardDiskFull>
<!--ro, opt, bool, read-only,whether the error of "HDD full" occurred: "true"-yes,"false"-no-->true

C. arc
</hardDiskFull>
<hardDiskError>
<!--ro, opt, bool, read-only,whether the error of "HDD error" occurred: "true"-yes,"false"-no-->true
</hardDiskError>

s, em
<ethernetBroken>
<!--ro, opt, bool, read-only,whether the error of "network disconnected" occurred: "true"-yes,"false"-no-->true

A
</ethernetBroken>

no fr
<ipaddrConflict>
<!--ro, opt, bool, IP address is conflicted.-->true
</ipaddrConflict>

ri on
<illegalAccess>
<!--ro, opt, bool, illegal access-->true
</illegalAccess>

Ma oc
<recordError>
<!--ro, opt, bool, read-only,whether the error of "recording exception" occurred: "true"-yes,"false"-no-->true
up
</recordError>
<raidLogicDiskError>
<!--ro, opt, bool, read-only,whether the error of "RAID exception" occurred: "true"-yes,"false"-no-->true
co gr

</raidLogicDiskError>
<spareWorkDeviceError>
<!--ro, opt, bool, read-only,whether the error of "working device exception" occurred: "true"-yes,"false"-no-->true
es a@

</spareWorkDeviceError>
</DetailAbnormalStatus>
Fr rc

<systemContact>
s

<!--ro, opt, string, contact information of the device, range:[1,32]-->STD-CGI


</systemContact>
y ema

<model>
<!--ro, req, string, device model, range:[1,64]-->iDS-9632NX-I8/X
</model>
<serialNumber>
os fr

<!--ro, req, string, device serial No., range:[1,48]-->iDS-9632NX-I8/X1620181209CCRRC77605411WCVU


</serialNumber>
<macAddress>
ad on

<!--ro, req, string, MAC Address, range:[1,64]-->44:47:cc:c8:d9:e4


</macAddress>
el .c

<firmwareVersion>
<!--ro, req, string, device firmware version, range:[1,64]-->V4.1.40
</firmwareVersion>
ez

<firmwareReleasedDate>
<!--ro, opt, string, compile date of the device firmware version-->2019-11-01
</firmwareReleasedDate>
en

<encoderVersion>
<!--ro, opt, string, device encoder version No., range:[1,32]-->V7.3
im

</encoderVersion>
<encoderReleasedDate>
ng

<!--ro, opt, string, compile date of the device encoder version-->2019-11-02


Aj

</encoderReleasedDate>
<bootVersion>
Co

<!--ro, opt, string, boot version, range:[1,16]-->V1.3.4


</bootVersion>
<bootReleasedDate>
<!--ro, opt, string, release date of boot-->2019-11-03
</bootReleasedDate>
<panelVersion>
<!--ro, opt, string, panel version, range:[1,32]-->V1.0
</panelVersion>
<hardwareVersion>
<!--ro, opt, string, hardware version, range:[1,16]-->0x0
</hardwareVersion>
<decoderVersion>
<!--ro, opt, string, device decoder version, range:[1,32]-->V1.0
</decoderVersion>
<decoderReleasedDate>
<!--ro, opt, string, compile date of the device decoder version-->2019-01-01
</decoderReleasedDate>
<softwareVersion>
<!--ro, opt, string, read-only,software version, range:[1,32]-->V1.23
</softwareVersion>
<capacity>
<!--ro, opt, int, read-only,unit: MB,device capacity, range:[1,10240], desc:unit: MB-->1
</capacity>
<usedCapacity>
<usedCapacity>
<!--ro, opt, int, read-only,unit: MB,capacity usage, range:[1,10240], desc:unit: MB-->1
</usedCapacity>
<telecontrolID>
<!--opt, int, keyfob ID, range:[1,255]-->1
</telecontrolID>
<supportBeep>
<!--ro, opt, bool, whether to support buzzer-->true
</supportBeep>
<supportVideoLoss>
<!--ro, opt, bool, whether the device supports video loss-->true
</supportVideoLoss>
<firmwareVersionInfo>
<!--ro, opt, string, firmware version information, range:[1,32]-->test
</firmwareVersionInfo>
<actualFloorNum>

m
<!--ro, opt, int, actual number of floors,which is between 1 and 128, range:[1,128]-->1

co
</actualFloorNum>
<localZoneNum>
<!--ro, opt, int, number of zones (local), range:[0,16]-->1

a.
</localZoneNum>
<alarmOutNum>
<!--ro, opt, int, number of alarm outputs, range:[0,16]-->1

C. arc
</alarmOutNum>
<distanceResolution>
<!--ro, opt, float, distance resolution, range:[0.000,0.999]-->0.000
</distanceResolution>

s, em
<angleResolution>
<!--ro, opt, float, angle resolution, range:[0.000,0.999]-->0.000

A
</angleResolution>

no fr
<speedResolution>
<!--ro, opt, float, resolution of speed,unit: m/s, range:[0.000,0.999]-->0.000

ri on
</speedResolution>
<detectDistance>
<!--ro, opt, float, detection distance, range:[0.000,0.999]-->0.000

Ma oc
</detectDistance>
<relayNum>
<!--ro, opt, int, number of relays (local), range:[0,16]-->1
up
</relayNum>
<electroLockNum>
co gr

<!--ro, opt, int, number of locks (local), range:[0,16]-->1


</electroLockNum>
<sirenNum>
es a@

<!--ro, opt, int, number of sirens, range:[0,16]-->1


</sirenNum>
<alarmLamp>
Fr rc

<!--ro, opt, int, number of alarm lamps, range:[0,16]-->1


</alarmLamp>
y ema

<RS485Num>
<!--ro, opt, int, number of 485, range:[0,16]-->1
</RS485Num>
<radarVersion>
os fr

<!--ro, opt, string, radar version, range:[1,32]-->test


</radarVersion>
<cameraModuleVersion>
ad on

<!--ro, opt, string, camera modulo version, range:[1,32]-->test


</cameraModuleVersion>
<mainversion>
el .c

<!--ro, opt, int, main version No., range:[1,255]-->1


</mainversion>
<subversion>
ez

<!--ro, opt, int, sub version No., range:[1,255]-->1


</subversion>
en

<upgradeversion>
<!--ro, opt, int, update version No., range:[1,255]-->1
</upgradeversion>
im

<customizeversion>
<!--ro, opt, int, custom version No., range:[1,255]-->1
ng

</customizeversion>
Aj

<companyName>
Co

<!--ro, opt, string, manufacturer name, range:[1,32]-->test


</companyName>
<copyright>
<!--ro, opt, string, version information, range:[1,32]-->test
</copyright>
<systemName>
<!--ro, opt, enum, storage system name, subType:string, desc:"storageManagement" (storage management system), "distributedStorageManagement"
(distributed storage management system)-->storageManagement
</systemName>
<systemStatus>
<!--ro, opt, enum, system status, subType:string, desc:"configured", "unConfigured" (not configured)-->configured
</systemStatus>
<isLeaderDevice>
<!--ro, opt, bool, whether it is the corresponding device of the resource IP address-->true
</isLeaderDevice>
<clusterVersion>
<!--ro, opt, string, cluster version, range:[1,32], desc:it is valid when isLeaderDevice returns true-->test
</clusterVersion>
<centralStorageVersion>
<!--ro, opt, string, center storage version, range:[1,16]-->test
</centralStorageVersion>
<powerOnMode>
<!--ro, opt, enum, startup mode, subType:string, desc:"button" (press button to power on), "adapter" (connect adapter to power on)-->button
</powerOnMode>
</powerOnMode>
<customizedInfo>
<!--ro, opt, string, custom project No., range:[1,32], desc:no value will be returned if it is baseline device. custom project No. will be returned if
is custom device-->test
</customizedInfo>
<verificationCode>
<!--ro, opt, string, device verification code-->test
</verificationCode>
<supportUrl>
<!--ro, opt, string, service portal-->test
</supportUrl>
<subSerialNumber>
<!--ro, opt, string, sub serial No.-->test
</subSerialNumber>
<languageType opt="chinese,english,spanish,portuguese,italian,french,russian,turkish,greek,czech,brazilianPortuguese">
<!--ro, opt, enum, language type, subType:string, attr:opt{req, string}, desc:"chinese", "english", "spanish", "portuguese", "italian", "french",
"russian", "turkish", "greek", "czech", "brazilianPortuguese", "slovenian", "swedish", "norwegian", "romanian", "danish", "german", "polish", "dutch",

m
"hungarian", "slovak", "serbian", "southAmericanSpanish", "ukrainian", "croatian", "irish", "bulgarian", "hebrew", "thai", "indonesian", "arabic",

co
"traditionalChinese"-->chinese
</languageType>
<DockStation>

a.
<!--ro, opt, object, dock station configuration-->
<Platform>

C. arc
<!--ro, opt, object, platform configuration-->
<ip>
<!--ro, opt, string, IP address, range:[1,32]-->test
</ip>

s, em
<port>
<!--ro, opt, int, communication port, range:[1,65535]-->1

A
</port>

no fr
<userName>
<!--ro, req, string, user name,which is used for the dock station to log in to platform, range:[1,32]-->test
</userName>

ri on
<password>
<!--ro, req, string, password, range:[1,16]-->test

Ma oc
</password>
</Platform>
<centralStorageBackupEnabled>
up
<!--ro, opt, bool, whether to enable central storage backup-->true
</centralStorageBackupEnabled>
</DockStation>
co gr

<webVersion>
<!--ro, opt, string, Web version No., range:[1,32]-->test
es a@

</webVersion>
<deviceRFProgramVersion>
<!--ro, opt, string, device RF program version, range:[1,32]-->test
Fr rc

</deviceRFProgramVersion>
s

<securityModuleSerialNo>
<!--ro, opt, string, security module serial No., range:[1,32]-->test
y ema

</securityModuleSerialNo>
<securityModuleVersion>
<!--ro, opt, string, security module version, range:[1,32]-->test
</securityModuleVersion>
os fr

<securityChipVersion>
<!--ro, opt, string, security chip version, range:[1,32]-->test
</securityChipVersion>
ad on

<securityModuleKeyVersion>
<!--ro, opt, string, security module key version, range:[1,32]-->test
el .c

</securityModuleKeyVersion>
<UIDLampRecognition>
<!--ro, opt, object, recognize the device information by UID-->
ez

<enabled>
<!--ro, opt, bool, whether to enable the function-->true
</enabled>
en

</UIDLampRecognition>
<confDeviceIdPrefix>
im

<!--ro, opt, bool, whether the meeting uses the device name as its prefix-->true
</confDeviceIdPrefix>
ng

<OEMCode>
Aj

<!--ro, opt, enum, manufacturer OME code, subType:int, desc:1 (standard device), 0 (neutral device)-->1
</OEMCode>
Co

<simpleAlgorithmVersion>
<!--ro, opt, string, single algorithm version, desc:for fire control analyzer, it only supports one recognition algorithm if this node is returned to
the device information-->test
</simpleAlgorithmVersion>
<bootTime>
<!--ro, opt, datetime, boot time-->1970-01-01T00:00:00+08:00
</bootTime>
<intelligentAnalysisEngineModel>
<!--ro, opt, string, engine model, range:[1,32]-->test
</intelligentAnalysisEngineModel>
<marketType>
<!--ro, opt, enum, market type, subType:int, desc:0 (invalid), 1 (distribution type), 2 (industry type)-->0
</marketType>
<algorithmVersion>
<!--ro, opt, string, HCNN algorithm version, desc:its Data Dictionary is provided by research institute for matching the algorithm model-->test
</algorithmVersion>
<firmware>
<!--ro, opt, string, firmware version, desc:its Data Dictionary is provided by research institute for matching the algorithm model-->test
</firmware>
<engineList>
<!--ro, opt, object, list of device computing power, desc:it returns engine No. by number of GPU chips-->
<engine>
<!--ro, opt, int, returned engine No.-->1
</engine>
</engineList>
<platform>
<!--ro, opt, enum, platform type, subType:int, desc:1 (TX1), 2 (P4), 3 (3559), 4 (3519), 5 (3516)-->1
</platform>
<platformName>
<!--ro, opt, string, the platform where the algorithm runs, desc:TX1/K81: NVR, KT: data center,H5: front-end device, H7: front-end device, K82: NVR, G3:
front-end device-->test
</platformName>
<touchScreenVersionInfo>
<!--ro, opt, string, touch screen module version-->test
</touchScreenVersionInfo>
<protocolFileURL>
<!--ro, opt, string, protocol notice URI, range:[1,32]-->test
</protocolFileURL>
<recycleRecordEnabled>

m
<!--ro, opt, bool, whether to enable overwritten recording-->false

co
</recycleRecordEnabled>
<decordChannelNums>
<!--ro, opt, int, number of decoding channels-->0

a.
</decordChannelNums>
<VGANums>
<!--ro, opt, int, number of VGA ports-->0

C. arc
</VGANums>
<USBNums>
<!--ro, opt, int, number of USB ports-->0
</USBNums>

s, em
<auxoutNums>

A
<!--ro, opt, int, number of auxiliary ports-->0

no fr
</auxoutNums>
<expansionBoardVersion>
<!--ro, opt, string, extension board version information, range:[1,32]-->test

ri on
</expansionBoardVersion>
<initWizzardDisplay>
<!--ro, opt, bool, whether it displays initialization wizard, desc:it is only used for displaying configuration of applications integrated to the

Ma oc
wizard, such as local GUI and Hik-Connect app by default, the value is true. it is false after the local GUI configures the wizard-->true
</initWizzardDisplay>
up
<beaconID>
<!--ro, opt, string, device RF program version No., range:[0,32], desc:by default, it is the current value-->test
</beaconID>
co gr

<isResetDeviceLanguage>
<!--ro, opt, bool, whether it supports resetting the device language (only for Admin and Installer), desc:if the value is true, the Hik-Connect app and
the Web Client display device information in the target language; if the value is false, the Hik-Connect app and the Web Client display the original device
es a@

information-->false
</isResetDeviceLanguage>
<dispalyNum>
Fr rc

<!--ro, opt, int, number of windows-->0


</dispalyNum>
y ema

<bspVersion>
<!--ro, opt, string, BSP software version-->test
</bspVersion>
<dspVersion>
os fr

<!--ro, opt, string, DSP software version-->test


</dspVersion>
<localUIVersion>
ad on

<!--ro, opt, string, local UI version-->test


</localUIVersion>
<detectorType>
el .c

<!--ro, opt, enum, detector type, subType:string, desc:"PDA" (photo-diode array)-->PDA


</detectorType>
ez

<wiegandOutNum>
<!--ro, opt, int, number of Wiegand outputs, range:[0,1]-->1
</wiegandOutNum>
en

<ChipVersionInfoList>
<!--ro, opt, array, subType:object, range:[1,6]-->
<ChipVersionInfo>
im

<!--ro, opt, object-->


<ID>
ng
Aj

<!--ro, req, int, range:[0,1]-->1


</ID>
Co

<firmwareVersion>
<!--ro, req, string, range:[0,64]-->1.0.0
</firmwareVersion>
</ChipVersionInfo>
</ChipVersionInfoList>
<personBagLinkAlgoEngineVersion>
<!--ro, opt, string, engine version of the person & package linkage module, range:[0,64], desc:this node is for analyzer (security inspection)-->1.0.0
</personBagLinkAlgoEngineVersion>
<BIOSVersion>
<!--ro, opt, string, BIOS version, range:[0,16]-->test
</BIOSVersion>
<contactInformation>
<!--ro, opt, string, contact information, range:[0,64]-->test
</contactInformation>
<materialScanAlgorithmVersion>
<!--opt, string, material scan algorithm version, range:[0,64], desc:algorithm version of imaging radar panel for material scan-->test
</materialScanAlgorithmVersion>
<audioVersion>
<!--ro, opt, string, range:[1,32]-->test
</audioVersion>
</DeviceInfo>
Response Message

<?xml version="1.0" encoding="UTF-8"?>


<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<!--ro, req, object, response message, attr:version{ro, req, string, protocolVersion}-->
<requestURL>
<!--ro, req, string, request URL, range:[0,1024]-->null
</requestURL>
<statusCode>
<!--ro, req, enum, status code, subType:int, desc:0 (OK), 1 (OK), 2 (Device Busy), 3 (Device Error), 4 (Invalid Operation), 5 (Invalid XML Format), 6
(Invalid XML Content), 7 (Reboot Required)-->0
</statusCode>
<statusString>
<!--ro, req, enum, status description, subType:string, desc:"OK" (succeeded), "Device Busy", "Device Error", "Invalid Operation", "Invalid XML Format",

m
"Invalid XML Content", "Reboot" (reboot device)-->OK
</statusString>

co
<subStatusCode>
<!--ro, req, string, sub status code, desc:sub status code-->OK

a.
</subStatusCode>
<description>
<!--ro, opt, string, range:[0,1024]-->badXmlFormat

C. arc
</description>
</ResponseStatus>

s, em
16.1.2.4 Get firmware code list

A
no fr
Request URL

ri on
GET /ISAPI/System/firmwareCodeV2?startIndex=<startIndex>&maxNumber=<maxNumber>

Ma oc
Query Parameter up
Parameter Parameter
Description
Name Type
co gr

To control the message size, the quantity of returned firmware IDs returned by device
es a@

depends on the client request. For example, if there are 100 firmware IDs of a device, and
startIndex string up to 32 IDs are allowed in every request, then the device returns only 32 IDs according to
Fr rc

the start index (startIndex). Examples: GET /ISAPI/System/firmwareCodeV2?


y ema

startIndex=1&maxNumber=32
To control the message size, the quantity of returned firmware IDs returned by device
os fr

depends on the client request. For example, if there are 100 firmware IDs of a device, and
maxNumber string up to 32 IDs are allowed in every request, then the device returns only 32 IDs according to
ad on

the start index (startIndex). Examples: GET /ISAPI/System/firmwareCodeV2?


el .c

startIndex=1&maxNumber=32
ez

Request Message
en

None
Response Message
im
ng
Aj
Co
<?xml version="1.0" encoding="UTF-8"?>

<FirmwareCodeList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, opt, array, firmware ID list, subType:object, attr:version{req, string, protocolVersion}-->
<FirmwareCode>
<!--ro, opt, object, firmware ID-->
<index>
<!--ro, req, int, index, desc:it starts from 1-->1
</index>
<code>
<!--ro, req, string, firmware ID, desc:N/A-->00000002000001000000000100000001000000010000000000000001ffffffff0001020307e1060100001000
</code>
<version>
<!--ro, req, string, version-->V5.5.160 build 210416

m
</version>
<channel>

co
<!--ro, opt, int, channel No., desc:this node is for IP channel-->1
</channel>

a.
<devTypeName>
<!--ro, opt, string, device model name which IP channel corresponds to, desc:device model name which IP channel corresponds to-->test
</devTypeName>

C. arc
<moduleType>
<!--ro, opt, enum, device component type, subType:string, desc:"cardReader" (card reader), "FPModule" (fingerprint module), "securityModule" (security
module), "extendModule" (I/O extended module), "channelController" (lane controller), "IRModule" (infrared module), "lampModule" (indicator module),
"elevatorController" (sub elevator controller), "FPAlgorithmProgram" (fingerprint algorithm programma of card reader), "dockStationHost" (dock station

s, em
host), "dockStationScreen" (dock station screen)-->cardReader
</moduleType>

A
<moduleID>

no fr
<!--ro, opt, int, device component No., desc:it depends on the value of moduleType-->1
</moduleID>
</FirmwareCode>

ri on
</FirmwareCodeList>

16.1.3 Event Subscription Management Ma oc


up
co gr

16.1.3.1 Get the alarm/event subscription capability


Request URL
es a@

GET /ISAPI/Event/notification/subscribeEventCap
Fr rc

Query Parameter
y ema

None
Request Message
os fr

None
ad on

Response Message
el .c

<?xml version="1.0" encoding="UTF-8"?>


ez

<SubscribeEventCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, picture uploading modes of all events which contain pictures, attr:version{req, string, protocolVersion}-->
<format opt="xml,json">
en

<!--ro, opt, string, attr:opt{req, string}-->xml


</format>
im

<heartbeat min="1" max="180">


<!--ro, opt, int, heartbeat interval time, range:[1,180], unit:s, attr:min{req, int},max{req, int}-->1
ng

</heartbeat>
Aj

<channelMode opt="all,list">
<!--ro, opt, enum, channel subscription mode, subType:string, attr:opt{req, string}, desc:"all" (subscribe to all channels), "list" (subscribe to
Co

channels according to channel list)-->list


</channelMode>
<eventMode opt="all,list">
<!--ro, req, enum, event subscription mode, subType:string, attr:opt{req, string}, desc:"all" (subscribe to all alarms/events), "list" (subscribe to
specified alarms/events)-->list
</eventMode>
<EventList>
<!--ro, opt, array, event type list for subscription, subType:object, desc:this node is valid when eventMode is "list"-->
<Event>
<!--ro, opt, object, subscription of a specified alarm/event-->
<type>
<!--ro, req, enum, event type, subType:string, desc:refer to event type list (eventType): "ADAS"(advanced driving assistance system), "ADASAlarm"
(advanced driving assistance alarm), "AID"(traffic incident detection), "ANPR"(automatic number plate recognition), "AccessControllerEvent" (access
controller event), "CDsStatus" (CD burning status), "DBD"(driving behavior detection) "GPSUpload" (GPS information upload), "HFPD"(frequently appeared
person detection), "IO"(I/O alarm), "IOTD" (IoT device detection), "LES" (logistics scanning event), "LFPD"(rarely appeared person detection), "PALMismatch"
(video standard mismatch), "PIR", "PeopleCounting" (people counting), "PeopleNumChange" (people number change detection), "Standup"(standing up detection),
"TMA"(thermometry alarm), "TMPA"(temperature measurement pre-alarm), "VMD"(motion detection), "abnormalAcceleration", "abnormalDriving", "advReachHeight",
"alarmResult", "attendance", "attendedBaggage", "audioAbnormal", "audioexception", "behaviorResult"(abnormal event detection), "blindSpotDetection"(blind
spot detection alarm), "cardMatch", "changedStatus", "collision", "containerDetection", "crowdSituationAnalysis", "databaseException", "defocus"(defocus
detection), "diskUnformat"(disk unformatted), "diskerror", "diskfull", "driverConditionMonitor"(driver status monitoring alarm); "emergencyAlarm",
"faceCapture", "faceSnapModeling", "facedetection", "failDown"(People Falling Down), "faultAlarm", "fielddetection"(intrusion detection), "fireDetection",
"fireEscapeDetection", "flowOverrun", "framesPeopleCounting", "getUp"(getting up detection), "group" (people gathering), "hdBadBlock"(HDD bad sector
detection event), "hdImpact"(HDD impact detection event), "heatmap"(heat map alarm), "highHDTemperature"(HDD high temperature detection event),
"highTempAlarm"(HDD high temperature alarm), "hotSpare"(hot spare exception), "illaccess"(invalid access), "ipcTransferAbnormal", "ipconflict"(IP address
"highTempAlarm"(HDD high temperature alarm), "hotSpare"(hot spare exception), "illaccess"(invalid access), "ipcTransferAbnormal", "ipconflict"(IP address
conflicts), "keyPersonGetUp"(key person getting up detection), "leavePosition"(absence detection), "linedetection"(line crossing detection),
"listSyncException"(list synchronization exception), "loitering"(loitering detection), "lowHDTemperature"(HDD low temperature detection event),
"mixedTargetDetection"(multi-target-type detection), "modelError", "nicbroken"(network disconnected), "nodeOffline"(node disconnected),
"nonPoliceIntrusion", "overSpeed"(overspeed alarm), "overtimeTarry"(staying overtime detection), "parking"(parking detection), "peopleNumChange",
"peopleNumCounting", "personAbnormalAlarm"(person ID exception alarm), "personDensityDetection", "personQueueCounting", "personQueueDetection",
"personQueueRealTime"(real-time data of people queuing-up detection), "personQueueTime"(waiting time detection), "playCellphone"(playing mobile phone
detection), "pocException"(video exception), "poe"(POE power exception), "policeAbsent", "radarAlarm", "radarFieldDetection", "radarLineDetection",
"radarPerimeterRule"(radar rule data), "radarTargetDetection", "radarVideoDetection"(radar-assisted target detection), "raidException", "rapidMove",
"reachHeight"(climbing detection), "recordCycleAbnormal"(insufficient recording period), "recordException", "regionEntrance", "regionExiting", "retention"
(people overstay detection), "rollover", "running"(people running), "safetyHelmetDetection"(hard hat detection), "scenechangedetection", "sensorAlarm"
(angular acceleration alarm), "severeHDFailure"(HDD major fault detection), "shelteralarm"(video tampering alarm), "shipsDetection", "sitQuietly"(sitting
detection), "smokeAndFireDetection", "smokeDetection", "softIO", "spacingChange"(distance exception), "sysStorFull"(storaging full alarm of cluster system),
"takingElevatorDetection"(elevator electric moped detection), "targetCapture", "temperature"(temperature difference alarm), "thermometry"(temperature
alarm), "thirdPartyException", "toiletTarry"(in-toilet overtime detection), "tollCodeInfo"(QR code information report), "tossing"(thrown object detection),
"unattendedBaggage", "vehicleMatchResult"(uploading list alarms), "vehicleRcogResult", "versionAbnormal"(cluster version exception), "videoException",

m
"videoloss", "violationAlarm", "violentMotion"(violent motion detection), "yardTarry"(playground overstay detection), "AccessControllerEvent",

co
"IDCardInfoEvent", "FaceTemperatureMeasurementEvent", "QRCodeEvent"(QR code event of access control), "CertificateCaptureEvent"(person ID capture comparison
event), "UncertificateCompareEvent", "ConsumptionAndTransactionRecordEvent", "ConsumptionEvent", "TFS" (traffic enforcement event),
"TransactionRecordEvent", "HealthInfoSyncQuery" (health information search event), "SetMealQuery"(searching consumption set meals), "ConsumptionStatusQuery"

a.
(searching the consumption status), "certificateRevocation" (certificate expiry), "humanBodyComparison" (human body comparison),
"regionTargetNumberCounting" (regional target statistics)-->mixedTargetDetection
</type>

C. arc
<minorAlarm opt="0x400,0x401,0x402,0x403">
<!--ro, opt, string, minor alarm type, attr:opt{req, string}, desc:"IDCardInfoEvent" is required when the type of event is "AccessControllerEvent"--
>0x400,0x401
</minorAlarm>

s, em
<minorException opt="0x400,0x401,0x402,0x403">
<!--ro, opt, string, minor exception type, attr:opt{req, string}, desc:"IDCardInfoEvent" is required when the type of event is

A
"AccessControllerEvent"-->0x400,0x401

no fr
</minorException>
<minorOperation opt="0x400,0x401,0x402,0x403">

ri on
<!--ro, opt, string, minor operation type, attr:opt{req, string}, desc:"IDCardInfoEvent" is required when the type of event is
"AccessControllerEvent"-->0x400,0x401
</minorOperation>

Ma oc
<minorEvent opt="0x01,0x02,0x03,0x04">
<!--ro, opt, string, minor event type, attr:opt{req, string}, desc:"IDCardInfoEvent" is required when the type of event is "AccessControllerEvent"--
>0x400,0x401
up
</minorEvent>
<pictureURLType opt="binary,localURL,cloudStorageURL,multipart" def="cloudStorageURL">
co gr

<!--ro, opt, enum, alarm picture format, subType:string, attr:opt{req, string},def{req, string}, desc:"binary" (binary), "localURL" (device local
URL), "cloudStorageURL" (cloud storage URL)-->cloudStorageURL
</pictureURLType>
es a@

<channels>
<!--ro, opt, string, channel information linked to event, desc:it supports multiple channels, which are separated by commas-->1,2,3,4
</channels>
Fr rc

<ConferenceIDList size="1">
<!--ro, opt, array, video conference ID list, subType:object, attr:size{req, int}, desc:when this node does not exist, it indicates to subscribe to
y ema

all conferences-->
<ConferenceID min="1" max="32">
<!--ro, opt, string, ID of subscribed video conference, range:[1,32], attr:min{req, int},max{req, int}-->test
</ConferenceID>
os fr

</ConferenceIDList>
<uploadAllTarget opt="true,false">
<!--ro, opt, bool, whether to upload all detected targets, attr:opt{req, string}, desc:the default value is false. In perimeter protection, this
ad on

node is used for NVR to get all targets detected by the network camera-->false
</uploadAllTarget>
<uploadMEFData opt="true,false">
el .c

<!--ro, opt, bool, whether to upload the electronic fence data related to the event, attr:opt{req, string}, desc:true by default-->true
</uploadMEFData>
<minorType opt="success,failed">
ez

<!--ro, opt, string, event sub-type, attr:opt{req, string},


desc:1. It is valid when the value of <type> is "CertificateCaptureEvent" or "ncertificateCompareEvent".
en

2. There is the requirement to only subscribe to the failure or success of an event, for example, security inspection at the railway station and the hotel
check-in.-->success
</minorType>
im

<childDevIDList min="1" max="8">


<!--ro, opt, array, subType:object, attr:min{req, int},max{req, int}-->
ng

<childDevID min="1" max="128">


Aj

<!--ro, opt, string, range:[1,128], attr:min{req, int},max{req, int}-->test


Co

</childDevID>
</childDevIDList>
<radarChannels>
<!--ro, opt, string-->1,2,3,4
</radarChannels>
<audioChannels>
<!--ro, opt, string-->1,2,3,4
</audioChannels>
</Event>
</EventList>
<channels>
<!--ro, opt, string, unified arming of all channels, desc:if this node is applied, <channels> in <Event> will be invalid. If the value of <channelMode>
is all, this node should not be applied. To arm a part of channels, you can list the channel numbers. Multiple channels are separated by commas-->1,2,3,4
</channels>
<pictureURLType opt="binary,localURL,cloudStorageURL,multipart" def="cloudStorageURL">
<!--ro, opt, enum, format unified configuration of alarm pictures, subType:string, attr:opt{req, string},def{req, string}, desc:"binary", "localURL"
(device local URL), "cloudStorageURL" (cloud storage URL). The node indicates the upload mode of all event pictures. If the node is applied, the
<pictureURLType> of the <Event> will be invalid. If the node is not applied, the pictures are uploaded in the default mode. The default data type of
uploaded pictures for front-end devices is binary, and for back-end devices is local URL of the device-->cloudStorageURL
</pictureURLType>
<ChangedUploadSub>
<!--ro, opt, object, subscribe to the uploaded information of device status changed event-->
<interval>
<!--ro, opt, int, the lifecycle of arming GUID, range:[1,300], unit:s, desc:the default value is 5 (unit: minute). Within the interval, if the client
<!--ro, opt, int, the lifecycle of arming GUID, range:[1,300], unit:s, desc:the default value is 5 (unit: minute). Within the interval, if the client
software does not reconnect to the device, a new GUID will be generated by the device-->300
</interval>
<StatusSub>
<!--ro, opt, bool, status information-->true
<all>
<!--ro, opt, bool, whether to subscribe to the changing status of all channels, HDDs, and capability sets-->false
</all>
<channel>
<!--ro, opt, bool, status of subscribed channels, desc:reporting is not required if all is true-->true
</channel>
<hd>
<!--ro, opt, bool, subscribe to HDD status, desc:reporting is not required if all is true-->true
</hd>
<capability>
<!--ro, opt, bool, subscribe to changing status of capability set, desc:reporting is not required if all is true-->true
</capability>

m
<ChanStatus>

co
<!--ro, opt, object, channel status subscription of uploaded device status changed event, desc:it is valid when the value of <channel> is true. When
this node does not exist, it indicates to upload all channel status changes. For example, the recording status is uploaded frequently, and the platform
focuses more on the device online status and arming status, thus the recording status needs to be unsubscribed-->

a.
<online opt="true,false">
<!--ro, opt, bool, whether the channel online status is subscribed, attr:opt{req, string}, desc:if this node does not exist, it indicates there

C. arc
will be no related alarm-->true
</online>
<record opt="true,false">
<!--ro, opt, bool, whether the recording status (the device is recording) is subscribed, attr:opt{req, string}, desc:if this node does not exist,

s, em
it indicates there will be no related alarm-->true
</record>

A
<recordStatus opt="true,false">

no fr
<!--ro, opt, bool, whether the recording status is subscribed, attr:opt{req, string}, desc:if this node does not exist, it indicates there will be
no related alarm-->true
</recordStatus>

ri on
<signal opt="true,false">
<!--ro, opt, bool, whether the signal status is subscribed, attr:opt{req, string}, desc:if this node does not exist, it indicates there will be no

Ma oc
related alarm-->true
</signal>
<arming opt="true,false">
up
<!--ro, opt, bool, whether the camera arming status (armed by NVR) is subscribed, attr:opt{req, string}, desc:if this node does not exist, it
indicates there will be no related alarm-->true
</arming>
co gr

</ChanStatus>
</StatusSub>
es a@

</ChangedUploadSub>
<identityKey max="64">
<!--ro, opt, string, subscription connection interaction key, range:[1,64], attr:max{req, int}, desc:N/A-->test
Fr rc

</identityKey>
s

<ConferenceIDList size="1">
<!--ro, opt, array, video conference ID list, subType:object, attr:size{req, int}-->
y ema

<ConferenceID min="1" max="32">


<!--ro, opt, string, ID of subscribed video conference, range:[1,32], attr:min{req, int},max{req, int}-->test
</ConferenceID>
</ConferenceIDList>
os fr

<isSupportModifySubscribeEvent>
<!--ro, opt, bool, whether the device supports the management of arming subscription, desc:related API: /ISAPI/Event/notification/subscribeEvent/<ID>--
>true
ad on

</isSupportModifySubscribeEvent>
<subscribeEventID min="1" max="128">
el .c

<!--ro, opt, string, custom subscription ID. The platform should guarantee the uniqueness of ID when applying it. The automatic network replenishment of
events will be enabled by default after the node is applied, range:[1,128], attr:min{req, int},max{req, int}, desc:when an event/alarm is subscribed
(related URL: POST /ISAPI/Event/notification/subscribeEvent), if this node is applied, it can be used to replace <id> (subscription ID) returned in message
ez

SubscribeEventResponse-->test
</subscribeEventID>
<level opt="high,middle,low">
en

<!--ro, opt, enum, arming level, subType:string, attr:opt{req, string}, desc:"high" (default value), "middle", "low"-->high
</level>
im

<middleLevelPictureEnabeld opt="true,false">
<!--ro, opt, bool, whether to enable picture uploading for middle-level arming, attr:opt{req, string}, desc:the default value is true-->true
ng

</middleLevelPictureEnabeld>
Aj

<deployID opt="1,2">
<!--ro, opt, enum, arming type, subType:int, attr:opt{req, string}, desc:0 (by client software), 1 (real-time)-->0
Co

</deployID>
<childDevIDList min="1" max="8">
<!--ro, opt, array, subType:object, attr:min{req, int},max{req, int}-->
<childDevID min="1" max="128">
<!--ro, opt, string, range:[1,128], attr:min{req, int},max{req, int}-->test
</childDevID>
</childDevIDList>
<SubscribeISAPIMessage>
<!--ro, opt, object-->
<eventType opt="AIOP_Video,AIOP_Polling_Video,AIOP_Picture,AIOP_Polling_Snap,TPS">
<!--ro, req, enum, subType:string, attr:opt{req, string}-->AIOP_Video
</eventType>
<eventPicUploadType opt="AIOP_Picture">
<!--ro, opt, enum, subType:string, attr:opt{req, string}-->AIOP_Picture
</eventPicUploadType>
</SubscribeISAPIMessage>
<radarChannels>
<!--ro, opt, string-->1,2,3,4
</radarChannels>
<qosLevel>
<!--ro, opt, object-->
<defaultLevel opt="0,1,2">
<!--ro, req, enum, subType:int, attr:opt{req, string}-->0
</defaultLevel>
<eventList>
<!--ro, opt, array, subType:object-->
<event>
<!--ro, opt, object-->
<eventType>
<!--ro, req, string, range:[0,64]-->test
</eventType>
<level opt="0,1,2">
<!--ro, req, enum, subType:int, attr:opt{req, string}-->1
</level>
<channels>
<!--ro, opt, string, range:[0,256]-->0,1,2
</channels>
</event>
</eventList>

m
</qosLevel>

co
<isSupportUnSubscribeEvent>
<!--ro, opt, bool-->true
</isSupportUnSubscribeEvent>

a.
<audioChannels>
<!--ro, opt, string-->1,2,3,4
</audioChannels>

C. arc
</SubscribeEventCap>

s, em
16.1.3.2 Cancel subscribing alarm/event

A
no fr
Request URL

ri on
PUT /ISAPI/Event/notification/unSubscribeEvent?ID=<subscribeEventID>
Query Parameter

Ma oc
Parameter Name Parameter Type Description
up
subscribeEventID string --
co gr

Request Message
es a@

None
Fr rc

Response Message
y ema

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


os fr

<!--ro, req, object, response message, attr:version{ro, req, string, protocolVersion}-->


<requestURL>
ad on

<!--ro, req, string, request URL-->null


</requestURL>
<statusCode>
el .c

<!--ro, req, enum, status code, subType:int, desc:0 (OK), 1 (OK), 2 (Device Busy), 3 (Device Error), 4 (Invalid Operation), 5 (Invalid XML Format), 6
(Invalid XML Content), 7 (Reboot Required)-->0
</statusCode>
ez

<statusString>
<!--ro, req, enum, status information, subType:string, desc:"OK" (succeeded), "Device Busy", "Device Error", "Invalid Operation", "Invalid XML Format",
en

"Invalid XML Content", "Reboot" (reboot device)-->OK


</statusString>
<subStatusCode>
im

<!--ro, req, string, sub status code, which describes the error in details, desc:sub status code, which describes the error in details-->OK
</subStatusCode>
ng

</ResponseStatus>
Aj
Co

16.1.3.3 Event subscription heartbeat


EventType:heartBeat
<?xml version="1.0" encoding="UTF-8"?>

<EventNotificationAlert xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, opt, object, alarm message, attr:version{opt, string, protocolVersion}-->
<ipAddress>
<!--ro, req, string, IPv4 address of the device that triggers the alarm-->172.6.64.7
</ipAddress>
<ipv6Address>
<!--ro, opt, string, IPv6 address of the device that triggers the alarm-->1080:0:0:0:8:800:200C:417A
</ipv6Address>
<portNo>
<!--ro, opt, int, communication port No. of the device that triggers the alarm-->80
</portNo>
<protocol>

m
<!--ro, opt, enum, transmission communication protocol type, subType:string, desc:when ISAPI protocol is transmitted via HCNetSDK, the channel No. is
the video channel No. of private protocol. When ISAPI protocol is transmitted via EZ protocol, the channel No. is the video channel No. of EZ protocol. When

co
ISAPI protocol is transmitted via ISUP, the channel No. is the video channel No. of ISUP-->HTTP
</protocol>

a.
<macAddress>
<!--ro, opt, string, MAC address-->01:17:24:45:D9:F4
</macAddress>

C. arc
<channelID>
<!--ro, opt, int, channel No. of the device that triggers the alarm, desc:video channel No. that triggers the alarm-->1
</channelID>
<dateTime>

s, em
<!--ro, req, datetime, alarm trigger time-->2004-05-03T17:30:08+08:00
</dateTime>

A
<activePostCount>

no fr
<!--ro, opt, int, times that the same alarm has been uploaded, desc:event triggering frequency-->1
</activePostCount>
<eventType>

ri on
<!--ro, req, string, event type-->heartBeat
</eventType>

Ma oc
<eventState>
<!--ro, req, enum, event status, subType:string, desc:for durative event: "active" (valid), "inactive" (invalid)-->active
</eventState>
up
<eventDescription>
<!--ro, req, string, event description-->heartBeat
</eventDescription>
co gr

<channelName>
<!--ro, opt, string, channel name, range:[1,64]-->test
es a@

</channelName>
<deviceID>
<!--ro, opt, string, device ID, desc:it should be returned for ISUP alarms, e.g., test0123 (Ehome2.0, Ehome4.0, and ISUP5.0)-->12345
Fr rc

</deviceID>
</EventNotificationAlert>
y ema

16.1.4 Input and Output Management


os fr

16.1.4.1 Get the alarm input and output information


ad on

Request URL
el .c

GET /ISAPI/System/IO
ez

Query Parameter
None
en

Request Message
im

None
ng
Aj

Response Message
Co

<?xml version="1.0" encoding="UTF-8"?>


<IOPortList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<!--ro, opt, object, see details in XML_IOOutputPortList, attr:version{req, string, protocolVersion}-->
<IOInputPortList>
<!--ro, opt, object-->
<IOInputPort>
<!--ro, opt, object-->
<id>
<!--ro, req, int-->1
</id>
<enabled>
<!--ro, req, bool, whether to enable the function-->true
</enabled>
<triggering>
<!--ro, req, enum, condition for triggering alarm output, subType:string, desc:"high"-high level, "low"-low level. Both the high level and the low
level can trigger continuously-->high
</triggering>
<name>
<!--ro, opt, string-->name
</name>
<IOUseType>
<!--ro, opt, enum, subType:string-->disable
<!--ro, opt, enum, subType:string-->disable
</IOUseType>
<inputType>
<!--ro, opt, enum, input manner, subType:string-->switch
</inputType>
<CombinationAlarm>
<!--ro, opt, object-->
<channel>
<!--ro, req, int, channel No.-->1
</channel>
<EventTypeList>
<!--ro, req, array, event type list, subType:object-->
<eventType>
<!--ro, opt, enum, event type, subType:string-->VMD
</eventType>
</EventTypeList>

m
</CombinationAlarm>

co
</IOInputPort>
</IOInputPortList>
<IOOutputPortList>

a.
<!--ro, opt, object-->
<IOOutputPort>
<!--ro, opt, object-->

C. arc
<id>
<!--ro, req, int-->1
</id>
<IODescriptor>

s, em
<!--ro, opt, object-->
<userName>

A
<!--ro, req, string, user name-->name

no fr
</userName>
<addressingFormatType>

ri on
<!--ro, req, enum, address type, subType:string, desc:"ipaddress", "hostname"-->ipaddress
</addressingFormatType>
<hostName>

Ma oc
<!--ro, opt, string, host name-->hostName
</hostName>
<ipAddress>
up
<!--ro, opt, string, IPv4 address-->172.6.64.7
</ipAddress>
co gr

<ipv6Address>
<!--ro, opt, string, IPv6 address-->1080:0:0:0:8:800:200C:417A
</ipv6Address>
es a@

<managePortNo>
<!--ro, req, int-->1
</managePortNo>
Fr rc

<innerIOPortID>
<!--ro, req, int-->1
y ema

</innerIOPortID>
</IODescriptor>
<PowerOnState>
<!--ro, req, object-->
os fr

<defaultState>
<!--ro, req, enum, subType:string, desc:"high"-high level, "low"-low level. Both the high level and the low level can trigger continuously-->high
</defaultState>
ad on

<outputState>
<!--ro, req, enum, subType:string-->high
</outputState>
el .c

<pulseDuration>
<!--ro, opt, int-->1000
</pulseDuration>
ez

</PowerOnState>
<name>
en

<!--ro, opt, string-->test


</name>
<IOUseType>
im

<!--ro, opt, enum, subType:string-->disable


</IOUseType>
ng

<normalStatus>
Aj

<!--ro, opt, enum, subType:string-->open


Co

</normalStatus>
<enabled>
<!--ro, opt, bool, whether to enable the function-->true
</enabled>
<IOType>
<!--ro, opt, enum, subType:string-->local
</IOType>
</IOOutputPort>
</IOOutputPortList>
</IOPortList>

16.1.4.2 Get device input and output capability


Request URL
GET /ISAPI/System/IO/capabilities
Query Parameter
None
Request Message
None
Response Message

<?xml version="1.0" encoding="UTF-8"?>

<IOCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, opt, object, device input and output capability, attr:version{req, string, protocolVersion}-->
<IOInputPortNums>
<!--ro, opt, int, number of device local inputs-->0
</IOInputPortNums>
<IOOutputPortNums>

m
<!--ro, opt, int, number of device local outputs-->0

co
</IOOutputPortNums>
<isSupportStrobeLamp>
<!--ro, opt, bool, whether the device supports configuring the output of the gate's light, desc:whether the device supports configuring the output of

a.
the gate's light-->true
</isSupportStrobeLamp>
<SoftIOInputPortNums>

C. arc
<!--ro, opt, int, number of device soft inputs, desc:number of device soft inputs-->0
</SoftIOInputPortNums>
<isSupportIOOutputAdvanceParameter>
<!--ro, opt, bool, whether supports configuration of alarm input advanced parameters, desc:related URI:

s, em
/ISAPI/System/IO/outputs/advanceParameter/capabilities?format=json-->true
</isSupportIOOutputAdvanceParameter>

A
no fr
<isSupportSetAllIOOutput>
<!--ro, opt, bool, whether the device supports configuring all outputs, desc:whether the device supports configuring all outputs-->true
</isSupportSetAllIOOutput>

ri on
<isSupportCombinationAlarm>
<!--ro, opt, bool, whether supports combined alarm, desc:see details in related URI: /ISAPI/System/IO/inputs/capabilities中CombinationAlarmCap-->true
</isSupportCombinationAlarm>

Ma oc
<enabledIOOutputPortNums>
<!--ro, opt, int, number of enabled alarm output ports-->0
</enabledIOOutputPortNums>
up
<isSupportAlarmKeyParam>
<!--ro, opt, bool, whether supports configuring the physical keys of one-push alarm, desc:related URI:
co gr

/ISAPI/System/IO/inputs/<IOInputID>/AlarmKeyParam/capabilities?format=json-->true
</isSupportAlarmKeyParam>
</IOCap>
es a@
Fr rc

16.1.5 Input Management


y ema

16.1.5.1 Get the information of all I/O input ports


Request URL
os fr

GET /ISAPI/System/IO/inputs
ad on

Query Parameter
el .c

None
ez

Request Message
None
en

Response Message
im
ng
Aj
Co
<?xml version="1.0" encoding="UTF-8"?>

<IOInputPortList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, array, list of I/O input ports, subType:object, attr:version{opt, string, protocolVersion}-->
<IOInputPort>
<!--ro, opt, object-->
<id>
<!--ro, req, int-->1
</id>
<enabled>
<!--ro, req, bool-->true
</enabled>
<triggering>
<!--ro, req, enum, "high"-high electrical level, "low"-low electrical level, subType:string, desc:"high"-high electrical level, "low"-low electrical

m
level-->high
</triggering>

co
<name>
<!--ro, opt, string, I/O port name-->name

a.
</name>
<IOUseType>
<!--ro, opt, enum, subType:string-->disable

C. arc
</IOUseType>
<inputType>
<!--ro, opt, enum, input mode, subType:string, desc:input mode-->switch
</inputType>

s, em
<CombinationAlarm>
<!--ro, opt, object-->

A
<channel>

no fr
<!--ro, req, int, channel No.-->1
</channel>
<EventTypeList>

ri on
<!--ro, req, array, event type list, subType:object-->
<eventType>

Ma oc
<!--ro, opt, enum, event type, subType:string, desc:"VMD" (motion detection), "shelteralarm" (video tampering alarm), "facedetection" (face
detection), "fielddetection" (intrusion detection), "linedetection" (line crossing detection), "regionEntrance" (region entrance), "regionExitings" (region
exiting), "loitering"(loitering detection), "group"(people gathering), "rapidMove" (fast moving), "parking" (parking detection), "unattendedBaggage"
up
(unattended baggage), "attendedBaggage" (object removal), "ANPR" (license plate recognition), "audioexception"(audio exception detection),
"barrierGateStatus" (barrier status)-->VMD
</eventType>
co gr

</EventTypeList>
</CombinationAlarm>
es a@

</IOInputPort>
</IOInputPortList>
Fr rc

16.1.6 Log Management


y ema

16.1.6.1 Search for log information


os fr

Request URL
ad on

POST /ISAPI/ContentMgmt/logSearch
el .c

Query Parameter
None
ez

Request Message
en
im
ng
Aj
Co
<?xml version="1.0" encoding="UTF-8"?>

<CMSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--req, object, log search, attr:version{opt, string, protocolVersion}-->
<searchID>
<!--req, string, search ID, range:[1,32], desc:UUID/GUID for record search. It is used to check whether the current search requester is the same as the
previous one. If they are the same, the search record will be stored in the device for faster search next time.-->test
</searchID>
<trackIDList>
<!--opt, array, channel list, subType:object-->
<trackID>
<!--req, int, channel No., desc:channel No.-->1
</trackID>
</trackIDList>

m
<metaId>
<!--req, enum, log type, subType:string, desc:{log.std-cgi.com/<majorType>/<minorType>}, <majorType>-major type of log, <minorType>-minor type of log,

co
see remarks for detailed log type definitions; "log.std-cgi.com/Alarm/methaneConcentrationException", "log.std-
cgi.com/Alarm/methaneLightIntensityException", "log.std-cgi.com/Alarm/fishingShipDetection"-->log.std-cgi.com/Alarm/methaneConcentrationException

a.
</metaId>
<timeSpanList>
<!--opt, array, list of time periods, subType:object, desc:list of time periods-->

C. arc
<timeSpan>
<!--opt, object, time period, desc:time period-->
<startTime>
<!--req, datetime, start time-->1970-01-01T00:00:00Z

s, em
</startTime>
<endTime>

A
<!--req, datetime, end time-->1970-01-01T01:00:00Z

no fr
</endTime>
</timeSpan>
</timeSpanList>

ri on
<searchResultPostion>
<!--opt, int, the start position of the search result, desc:the start position of the search result in the result list-->100

Ma oc
</searchResultPostion>
<maxResults>
<!--opt, int, the maximum number of records supported in this search, range:[0,100]-->0
up
</maxResults>
<onlySmart>
<!--opt, bool, whether to search for logs with smart information, desc:the value of this node is false by default-->false
co gr

</onlySmart>
<logLevel>
es a@

<!--opt, enum, subType:string-->emergency


</logLevel>
<alarmLevel>
Fr rc

<!--opt, enum, subType:string-->high


</alarmLevel>
</CMSearchDescription>
y ema

Response Message
os fr

<?xml version="1.0" encoding="UTF-8"?>


ad on

<CMSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


el .c

<!--ro, req, object, log search result, attr:version{opt, string, protocolVersion}-->


<searchID>
<!--ro, req, string, search ID, range:[1,32], desc:UUID/GUID for record search. It is used to check whether the current search requester is the same as
ez

the previous one. If they are the same, the search record will be stored in the device for faster search next time-->test
</searchID>
<responseStatus>
en

<!--ro, req, bool, search status-->true


</responseStatus>
im

<responseStatusStrg>
<!--ro, req, enum, search status string, subType:string, desc:"OK" (search completed), "NO MATCHES" (no matched data), "MORE" (more data waiting to be
ng

searched)-->OK
Aj

</responseStatusStrg>
<totalMatches>
Co

<!--ro, opt, int, total number of matched results-->12


</totalMatches>
<numOfMatches>
<!--ro, opt, int, number of results returned this time, range:[0,100]-->24
</numOfMatches>
<matchList>
<!--ro, opt, array, list of matched data records, subType:object-->
<searchMatchItem>
<!--ro, opt, object, single matched record-->
<logDescriptor>
<!--ro, opt, object, log description-->
<metaId>
<!--ro, req, string, log type for search, desc:log.std-cgi.com/<majorType>/<minorType>, "<majorType>" (major type of log), "<minorType>" (minor
type of log), see remarks for detailed log type definitions-->log.std-cgi.com/Alarm/24HZoneAlarm
</metaId>
<StartDateTime>
<!--ro, req, datetime, log time-->1970-01-01T00:30:00Z
</StartDateTime>
<localID>
<!--ro, opt, string, channel No.-->1
</localID>
<paraType>
<!--ro, opt, string, parameter type-->test
</paraType>
<userName>
<!--ro, opt, string, user name-->Admin
</userName>
<infoContent>
<!--ro, opt, string, log information content-->test
</infoContent>
<logInfo>
<!--ro, opt, object, log information-->
<OpenDoorRecord>
<!--ro, opt, object, video intercom unlocking record-->
<type>
<!--ro, req, enum, unlocking type, subType:string, desc:"password" (unlocking by password), "hijack" (unlocking by duress), "card" (unlocking
by card), "resident" (unlocking by resident), "center" (unlocking by management center)-->password
</type>
</OpenDoorRecord>

m
<VisAlarmRecord>

co
<!--ro, opt, object, video intercom alarm record-->
<type>
<!--ro, req, enum, alarm type, subType:string, desc:"zone" (zone alarm), "dismantle" (tampering alarm), "hijack" (duress alarm), "passwordErr"

a.
(password error alarm), "doorNotOpen" (unlocking-door-failed alarm), "doorNotClose" (locking-door-failed alarm), "SOS" (SOS alarm), "callReq" (device call
request alarm), "smartLockHijackFingerPrint" (smart lock duress alarm (fingerprint)), ‘smartLockHijackPassword" (smart lock duress alarm (password)),
"smartLockBreaking" (forced-open door alarm), "smartLockBeLocked" (lock-up door alarm), "smartLockLowBattery" (smart-lock-battery-low alarm)-->zone

C. arc
</type>
</VisAlarmRecord>
</logInfo>
<ipAddress>

s, em
<!--ro, opt, string, device IP address, range:[1,32]-->10.20.30.10
</ipAddress>

A
no fr
<object>
<!--ro, opt, enum, operation object, subType:string, desc:"network", "keypad", "remoteCtrl" (remote control), "card"-->network
</object>

ri on
<params>
<!--ro, opt, string, log parameters, desc:parameters (zone No., etc.)-->test
</params>

Ma oc
<seq>
<!--ro, opt, string, device serial No., range:[1,32]-->test
</seq>
up
<additionInformation>
<!--ro, opt, string, additional information, range:[1,128], desc:additional information of log-->test
co gr

</additionInformation>
<panelUser>
<!--ro, opt, string, user name of the operation panel, range:[0,16]-->admin
es a@

</panelUser>
<diskNumber>
<!--ro, opt, int, HDD No., range:[0,10000]-->0
Fr rc

</diskNumber>
<alarmInPort>
y ema

<!--ro, opt, int, alarm input port, range:[0,1000]-->0


</alarmInPort>
<alarmOutPort>
<!--ro, opt, int, alarm output port, range:[0,10000]-->0
os fr

</alarmOutPort>
<remoteHostIPAddress>
<!--ro, opt, string, remote host IP address, range:[1,32]-->10.12.25.23
ad on

</remoteHostIPAddress>
<logLevel>
<!--ro, opt, enum, subType:string-->emergency
el .c

</logLevel>
<alarmLevel>
ez

<!--ro, opt, enum, subType:string-->high


</alarmLevel>
<moduleName>
en

<!--ro, opt, string, range:[1,32]-->test


</moduleName>
</logDescriptor>
im

</searchMatchItem>
</matchList>
ng

</CMSearchResult>
Aj
Co

16.1.7 Online Upgrading Management


16.1.7.1 Get the device online upgrade capability
Request URL
GET /ISAPI/System/onlineUpgrade/capabilities
Query Parameter
None
Request Message
None
Response Message
<?xml version="1.0" encoding="UTF-8"?>

<OnlineUpgradeCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, opt, object, online upgrade, attr:version{req, string, protocolVersion}-->
<firmwareNum max="10">
<!--ro, req, int, number of supported online upgrade packages, attr:max{req, int}-->1
</firmwareNum>
<firmwareCode max="256">
<!--ro, req, int, maximum length of firmware ID, attr:max{req, int}-->1
</firmwareCode>
<firmwareVersion max="64">
<!--ro, req, int, maximum length of version, attr:max{req, int}-->1
</firmwareVersion>
<firmwareCodeNumOnce max="10">
<!--ro, req, int, maximum number of obtained firmware IDs, attr:max{req, int}-->1
</firmwareCodeNumOnce>

m
<upgradePercent min="0" max="100">

co
<!--ro, req, int, upgrade progress capability in percentage, attr:min{req, int},max{req, int}-->1
</upgradePercent>
<Version>

a.
<!--ro, opt, object, upgrade package version information-->
<newVersion max="64">

C. arc
<!--ro, req, string, version information of the new upgrade package, attr:max{req, int}-->test
</newVersion>
<changeLog max="64">
<!--ro, req, string, log of the new upgrade package, attr:max{req, int}-->test

s, em
</changeLog>
</Version>

A
<rebootAfterUpgrade>

no fr
<!--ro, opt, enum, upgrade options after device reboot, subType:string, desc:"auto" (auto upgrade), "manual" (manual upgrade)-->auto
</rebootAfterUpgrade>
<DeviceParameter>

ri on
<!--ro, opt, object, online upgrade parameters-->
<isSupportAutoDownloadPackage>
<!--ro, opt, bool, whether it supports automatic download of upgrade package-->true

Ma oc
</isSupportAutoDownloadPackage>
<notSupportAutoUpgrade>
up
<!--ro, opt, bool, whether it no longer supports automatic download of upgrade package and automatic upgrade, desc:corresponding URL: PUT
/ISAPI/System/onlineUpgrade/upgrade-->true
</notSupportAutoUpgrade>
co gr

<isSupportTimingUpgrade>
<!--ro, opt, bool, whether it supports scheduled upgrade-->true
</isSupportTimingUpgrade>
es a@

</DeviceParameter>
<ManualDownloadPackage>
Fr rc

<!--ro, opt, object, manual download of upgrade package-->


s

<supportOperation opt="start,cancel,pause,resume">
<!--ro, opt, enum, supported operations, subType:string, attr:opt{req, string}, desc:"start", "cancel", "pause", "resume"-->start
y ema

</supportOperation>
</ManualDownloadPackage>
<isSupportIgnoreCurrentVersion>
<!--ro, opt, bool, whether it supports ignoring the current version-->true
os fr

</isSupportIgnoreCurrentVersion>
<UpgradePackageTask>
<!--ro, opt, object, whether the device supports applying upgrade tasks, desc:if this node is returned, it indicates that the following URLs are also
ad on

supported: /ISAPI/System/onlineUpgrade/task?format=json, /ISAPI/System/onlineUpgrade/status/<ID>-->


<isSupportUpgradeModules>
el .c

<!--ro, opt, bool, whether the device supports upgrading sub modules-->true
</isSupportUpgradeModules>
<isSupportUpgradeChannels>
ez

<!--ro, opt, bool, whether the device supports upgrading sub channels-->true
</isSupportUpgradeChannels>
<isSupportDownloadStrategy>
en

<!--ro, opt, bool, whether the device supports strategy parameters of downloading upgrade package, desc:corresponding filed is "downloadStrategy" of
URL (/ISAPI/System/onlineUpgrade/task?format=json)-->true
im

</isSupportDownloadStrategy>
<isSupportDelayedUpgradeByDateTime>
ng

<!--ro, opt, bool, whether the device supports delaying the upgrade by time, desc:corresponding filed is "delayedUpgradeDateTime" of URL
Aj

(/ISAPI/System/onlineUpgrade/task?format=json)-->true
</isSupportDelayedUpgradeByDateTime>
Co

<upgradePackageAddressType opt="URL, ftpIPAddress, ftpDomainAddress">


<!--ro, opt, string, attr:opt{req, string}-->URL
</upgradePackageAddressType>
</UpgradePackageTask>
<isSupportPatrolInspection>
<!--ro, opt, bool, whether the device supports patrol inspection-->true
</isSupportPatrolInspection>
<isSupportBatchUpgrade>
<!--ro, opt, bool, whether the device supports batch online upgrades-->true
</isSupportBatchUpgrade>
<isSupportCancelUpgrade>
<!--ro, opt, bool, whether the device supports canceling online upgrade-->true
</isSupportCancelUpgrade>
<isSupportPackagePause>
<!--ro, opt, bool, whether the device supports pausing upgrade package download, desc:/ISAPI/System/onlineUpgrade/PackagePause?format=json-->true
</isSupportPackagePause>
<isSupportPackageResume>
<!--ro, opt, bool, whether the device supports resuming upgrade package download, desc:/ISAPI/System/onlineUpgrade/PackageResume?format=json-->true
</isSupportPackageResume>
<isSupportCancelUpgradeByTaskID>
<!--ro, opt, bool, whether the device supports canceling online upgrade by task ID, desc:corresponding to the field assignByTaskID of operationType in
URL PUT /ISAPI/System/onlineUpgrade/CancelUpgrade?format=json-->true
</isSupportCancelUpgradeByTaskID>
</OnlineUpgradeCap>
</OnlineUpgradeCap>

16.1.7.2 Get the online upgrade package downloading progress


Request URL
GET /ISAPI/System/onlineUpgrade/downloadPackage/status?format=json
Query Parameter
None
Request Message

m
co
None
Response Message

a.
C. arc
{
"DownloadPackageStatus": {
/*ro, req, object, upgrade package downloading status*/
"status": "notDownload",

s, em
/*ro, req, enum, download status, subType:string, desc:"notDownload", "downloading", "downloadFailed", "pause", "finish", "incorrectPackage"
(incorrect upgrade package format), "hdOperationFailed" (HD operation failed)*/

A
"total": 0.0,

no fr
/*ro, opt, float, upgrade package total size, desc:unit: MB, corrects to one decimal place*/
"remain": 0.0,
/*ro, opt, float, remaining space, desc:unit: MB, corrects to one decimal place*/

ri on
"speed": 0.0,
/*ro, opt, float, download speed, desc:unit: MB, corrects to one decimal place*/

Ma oc
"remainTime": 0,
/*ro, opt, int, estimated remaining time, unit:s*/
"progress": 0
up
/*ro, req, int, progress, range:[0,100]*/
}
}
co gr
es a@

16.1.7.3 Start to download upgrade package to device


Fr rc

Request URL
y ema

PUT /ISAPI/System/onlineUpgrade/downloadPackage?format=json
Query Parameter
os fr

None
ad on

Request Message
None
el .c

Response Message
ez

{
en

"statusCode": 1,
/*ro, opt, int, status code, desc:1 (succeeded). It is required when an error occurred*/
im

"statusString": "ok",
/*ro, opt, string, status description, range:[1,64], desc:"ok" (succeeded). It is required when an error occurred*/
ng

"subStatusCode": "ok",
Aj

/*ro, opt, string, sub status code, range:[1,64], desc:"ok" (succeeded). It is required when an error occurred*/
"errorCode": 1,
Co

/*ro, opt, int, error code, desc:it is required when the value of statusCode is not 1, it corresponds to subStatusCode*/
"errorMsg": "ok"
/*ro, opt, string, error information, desc:this node is required when the value of statusCode is not 1*/
}

16.1.7.4 Get the online upgrade progress of device


Request URL
GET /ISAPI/System/onlineUpgrade/status
Query Parameter
None
Request Message
None
Response Message

<?xml version="1.0" encoding="UTF-8"?>

<OnlineUpgradeStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, opt, object, online upgrade status, attr:version{req, string, protocolVersion}-->
<status>
<!--ro, req, enum, online upgrade status, subType:string, desc:"notUpgrade" (not upgraded), "upgrading", "successful" (upgraded), "languageMismatch"
(language mismatch), "writeFlashError" (failed to write to flash), "packageTypeMismatch" (upgrade package type mismatch), "packageVersionMismatch" (upgrade
version mismatch), "netUnreachable" (network disconnected), "unknownError" (unknown error), "engineVersionMismatch" (mismatch of upgrade package engine
version)-->notUpgrade
</status>
<percent>
<!--ro, req, int, current upgrade progress in percentage, range:[0,100]-->1

m
</percent>
<onlineUpdateDevInfoList>

co
<!--ro, opt, object, online upgrade device information, desc:containing the online upgrade status of sub devices, sub modules, or sub channels-->
<onlineUpdateDevInfo>

a.
<!--ro, opt, object, online upgrade device information-->
<moduleType>
<!--ro, req, enum, module type, subType:string, desc:"keypad", "detector", "cardReader" (card reader), "siren" (sounder), "relay", "transmitter"

C. arc
(transmitter), "remoteCtrl" (remote control),"repeater" (repeater), "SSD", "extensionModule" (extension module)-->keypad
</moduleType>
<moduleID>
<!--ro, req, int, module ID, range:[1,128], step:1-->1

s, em
</moduleID>
<model>

A
<!--ro, opt, string, model, range:[1,32]-->test

no fr
</model>
<status>

ri on
<!--ro, opt, enum, upgrade status, subType:string, desc:"allowance" (upgradeable, the upgrade command is not triggered), "ready" (waiting for
upgrade, the upgrade command has been triggered), "upgriding" (upgrading), "success" (upgraded), "failed" (upgrade failed)-->allowance
</status>

Ma oc
<percent>
<!--ro, opt, int, current upgrade percentage, range:[0,100]-->1
</percent>
up
<updateTime>
<!--ro, opt, datetime, upgrade completion time-->2004-05-03T17:30:08+08:00
</updateTime>
co gr

</onlineUpdateDevInfo>
</onlineUpdateDevInfoList>
es a@

</OnlineUpgradeStatus>
Fr rc

16.1.8 Serial Port Management


y ema

16.1.8.1 Get the serial port capability of the device


os fr

Request URL
GET /ISAPI/System/Serial/capabilities
ad on

Query Parameter
el .c

None
ez

Request Message
en

None
Response Message
im
ng
Aj
Co
<?xml version="1.0" encoding="UTF-8"?>

<SerialCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, opt, object, range of RS-485 serial port numbers supported by the device, attr:version{req, string, protocolVersion}-->
<rs485PortNums>
<!--ro, opt, int, the maximum number of RS-485 serial ports supported by the device-->0
</rs485PortNums>
<supportRS232Config>
<!--ro, opt, bool, whether the device supports configuring parameters of RS-232 serial ports-->true
</supportRS232Config>
<rs422PortNums>
<!--ro, opt, int, the maximum number of RS-422 serial ports supported by the device-->0
</rs422PortNums>
<rs232PortNums>

m
<!--ro, opt, int, the maximum number of RS-232 serial ports supported by the device-->0
</rs232PortNums>

co
<rs485WorkMode opt="Led, CaptureTrigger,transparent">
<!--ro, opt, string, range of RS-485 serial port No. supported by the device, attr:opt{req, string}-->test

a.
</rs485WorkMode>
<rs232SerialNumber opt="1,2,3">
<!--ro, opt, int, range of RS-232 serial port numbers supported by the device, attr:opt{req, string}-->1

C. arc
</rs232SerialNumber>
<rs485SerialNumber opt="4,5,6">
<!--ro, opt, int, range of RS-485 serial port numbers supported by the device, attr:opt{req, string}-->1
</rs485SerialNumber>

s, em
<isSupportAuthenticationService>
<!--ro, opt, bool, whether the device supports the serial port authentication service-->true

A
</isSupportAuthenticationService>

no fr
<isSupportDeviceInfo>
<!--ro, opt, bool, whether the device supports configuring the information about the serial port device-->true
</isSupportDeviceInfo>

ri on
<isSupportSearchDeviceInfoRelations>
<!--ro, opt, bool, whether the device supports searching the linkage information of the serial port device-->true

Ma oc
</isSupportSearchDeviceInfoRelations>
</SerialCap>
up
16.1.8.2 Get the capability of a specific serial port
co gr

Request URL
es a@

GET /ISAPI/System/Serial/ports/<portID>/capabilities
Fr rc

Query Parameter
y ema

Parameter Name Parameter Type Description


portID string --
os fr
ad on

Request Message
None
el .c

Response Message
ez

<?xml version="1.0" encoding="UTF-8"?>


en

<SerialPort xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, opt, object, port No., attr:version{req, string, protocolVersion}-->
<id>
im

<!--ro, req, int, ID-->0


ng

</id>
Aj

<enabled opt="true,false">
<!--ro, opt, bool, whether to enable, attr:opt{req, string}-->true
Co

</enabled>
<encryptKey min="0" max="10">
<!--ro, opt, string, key, attr:min{req, int},max{req, int}, desc:key-->test
</encryptKey>
<serialNumber opt="1,2,3,4,5">
<!--ro, opt, int, serial No., attr:opt{req, string}-->0
</serialNumber>
<serialPortType opt="RS485,RS422,RS232">
<!--ro, opt, string, serial port type, attr:opt{req, string}-->RS485
</serialPortType>
<serialAddress min="0" max="10">
<!--ro, opt, int, serial port address, attr:min{req, int},max{req, int}, desc:serial port address-->1
</serialAddress>
<duplexMode opt="half,full">
<!--ro, opt, string, duplex mode of the serial port, attr:opt{req, string}-->half
</duplexMode>
<direction opt="monodirectional,bdirectional">
<!--ro, opt, string, attr:opt{req, string}-->monodirectional
</direction>
<baudRate opt="1200,2400,4800,9600,19200,38400,57600,115200">
<!--ro, opt, int, attr:opt{req, string}-->1200
</baudRate>
<dataBits opt="6,7,8">
<!--ro, opt, int, attr:opt{req, string}-->6
<!--ro, opt, int, attr:opt{req, string}-->6
</dataBits>
<parityType opt="none,even,odd,mark,space">
<!--ro, opt, string, attr:opt{req, string}-->none
</parityType>
<stopBits opt="1,1.5,2">
<!--ro, opt, string, stop bit, attr:opt{req, string}-->1
</stopBits>
<workMode opt="console,transparent,audiomixe,screenCtrl,ptzCtrl,keyboard,matrix,audioMixers">
<!--ro, opt, string, working mode, attr:opt{req, string}-->console
</workMode>
<flowCtrl opt="none,software,hardware">
<!--ro, opt, string, flowCtrl, attr:opt{req, string}-->none
</flowCtrl>
<deviceName min="0" max="32">
<!--ro, opt, string, attr:min{req, int},max{req, int}-->test

m
</deviceName>
<deviceProtocol min="0" max="10">

co
<!--ro, opt, int, attr:min{req, int},max{req, int}-->0
</deviceProtocol>

a.
<mode opt="readerMode,clientMode,externMode,stairsControl,accessControlHost,disabled,custom,cardReceiver,QRCodeReader">
<!--ro, opt, string, working mode, attr:opt{req, string}-->readerMode
</mode>

C. arc
<modeChangeReboot>
<!--ro, opt, bool-->true
</modeChangeReboot>
<outputDataType opt="cardNo,employeeNo,auto">

s, em
<!--ro, opt, string, output data type, attr:opt{req, string}, desc:data type output from the door station to the elevator controller: floorNumber (floor
No.,default),cardNo (card No.)-->cardNo

A
</outputDataType>

no fr
<copyToAll opt="true,false">
<!--ro, opt, bool, attr:opt{req, string}-->true

ri on
</copyToAll>
<isVariable opt="true,false">
<!--ro, opt, bool, attr:opt{req, string}-->true

Ma oc
</isVariable>
<PTZInfo>
<!--ro, opt, object-->
up
<bindChannelNo min="0" max="10">
<!--ro, req, int, attr:min{req, int},max{req, int}-->0
co gr

</bindChannelNo>
<PTZProtocolList>
<!--ro, req, object-->
es a@

<PTZProtocol>
<!--ro, opt, object-->
<id>
Fr rc

<!--ro, req, int, protocol index-->0


</id>
<protoDesc>
y ema

<!--ro, req, string, protocol description-->test


</protoDesc>
</PTZProtocol>
</PTZProtocolList>
os fr

</PTZInfo>
<ScreenCtrlInfo>
ad on

<!--ro, opt, object, ScreenCtrlInfo, desc:this field is valid when the value of workMode is "screenCtrl"-->
<ScreenCtrlProtoList>
<!--ro, req, object, ScreenCtrlProtoList-->
el .c

<ScreenCtrlProto>
<!--ro, opt, object, ScreenCtrlProto-->
<id>
ez

<!--ro, req, int, protocol index-->0


</id>
en

<protoDesc>
<!--ro, req, string, protocol description-->test
</protoDesc>
im

</ScreenCtrlProto>
</ScreenCtrlProtoList>
ng

</ScreenCtrlInfo>
Aj

<MatrixCtrlInfo>
<!--ro, opt, object, MatrixCtrlInfo-->
Co

<MatrixCtrlProtoList>
<!--ro, req, object, MatrixCtrlProtoList-->
<MatrixCtrlProto>
<!--ro, opt, object, MatrixCtrlProto-->
<id>
<!--ro, req, int, protocol index-->0
</id>
<protoDesc>
<!--ro, req, string, protocol description-->test
</protoDesc>
</MatrixCtrlProto>
</MatrixCtrlProtoList>
</MatrixCtrlInfo>
<KeyBoardCtrlInfo>
<!--ro, opt, object, KeyBoardCtrlInfo-->
<KeyBoardCtrlProtoList>
<!--ro, req, object, KeyBoardCtrlProtoList-->
<KeyBoardCtrlProto>
<!--ro, opt, object, KeyBoardCtrlProto-->
<id>
<!--ro, req, int, protocol index-->0
</id>
<protoDesc>
<protoDesc>
<!--ro, req, string, protocol description-->test
</protoDesc>
</KeyBoardCtrlProto>
</KeyBoardCtrlProtoList>
</KeyBoardCtrlInfo>
<ControlAddress>
<!--ro, opt, object-->
<enabled opt="true,false">
<!--ro, req, bool, whether to enable, attr:opt{req, string}-->true
</enabled>
<address min="0" max="255">
<!--ro, req, int, IP address, attr:min{req, int},max{req, int}-->0
</address>
</ControlAddress>
<rs485WorkMode
opt="Led,sensor,CaptureTrigger,transparent,GPS,ModbusRTU,supplementLight,audibleVisualAlarm,columnSpeaker,commModeUsing433MHz,signalLampControl">

m
<!--ro, opt, string, working mode of RS-485 serial port, dep:and,{$.SerialPortList.SerialPort.serialPortType,eq,RS485}, attr:opt{req, string},

co
desc:working mode of RS-485 serial port,which is used for LED display or triggering transmission of captured pictures. This node is valid only when
<serialPortType> is "RS485"-->sensor
</rs485WorkMode>

a.
<SensorCtrlList>
<!--ro, opt, object-->

C. arc
<Sensor>
<!--ro, opt, object-->
<id min="1" max="3">
<!--ro, req, int, index, attr:min{req, int},max{req, int}-->1

s, em
</id>
<name min="1" max="32">

A
<!--ro, req, string, attr:min{req, int},max{req, int}-->visibilitySensor

no fr
</name>
<enabled opt="true,false">
<!--ro, req, bool, whether to enable, attr:opt{req, string}, desc:whether to enable the serial port: "true,false"-->false

ri on
</enabled>
</Sensor>
</SensorCtrlList>

Ma oc
<stairsControl>
<!--ro, opt, object, elevator control parameters-->
up
<outputDataType opt="floorNumber,cardNo">
<!--ro, opt, enum, data type output from the door station to the elevator controller, subType:string, attr:opt{req, string}, desc:floorNumber (floor
No.,default),cardNo (card No.)-->floorNumber
co gr

</outputDataType>
</stairsControl>
<comMode opt="active,passive">
es a@

<!--ro, opt, enum, communication mode, subType:string, attr:opt{req, string}, desc:communication mode-->active
</comMode>
Fr rc

<ModbusRTU>
s

<!--ro, opt, object-->


<ModbusRTUBaudRate opt="1200,2400,4800,9600,19200" def="9600">
y ema

<!--ro, opt, int, attr:opt{req, string},def{req, string}-->9600


</ModbusRTUBaudRate>
<ModbusRTUDataBits opt="5,6,7,8" def="8">
<!--ro, opt, int, attr:opt{req, string},def{req, string}-->6
os fr

</ModbusRTUDataBits>
<ModbusRTUParityType opt="none,even,odd" def="none">
<!--ro, opt, string, attr:opt{req, string},def{req, string}-->none
ad on

</ModbusRTUParityType>
<ModbusRTUStopBits opt="1,2" def="1">
el .c

<!--ro, opt, string, stop bit, attr:opt{req, string},def{req, string}-->1


</ModbusRTUStopBits>
<ModbusRTUFlowCtrl opt="none,software,hardware">
ez

<!--ro, opt, string, flowCtrl, attr:opt{req, string}-->none


</ModbusRTUFlowCtrl>
<decoderAddress min="0" max="255" def="0">
en

<!--ro, opt, int, decoder IP address, attr:min{req, int},max{req, int},def{req, int}-->1


</decoderAddress>
im

<online opt="true,false">
<!--ro, opt, bool, attr:opt{req, string}-->true
ng

</online>
Aj

</ModbusRTU>
<accessName min="1" max="32">
Co

<!--ro, opt, string, attr:min{req, int},max{req, int}-->test


</accessName>
<serialPortUse opt="acquAndCtrl,swipe,strongElectric">
<!--ro, opt, string, attr:opt{req, string}-->acquisition
</serialPortUse>
<acquisitionProtocol opt="modbus,custom">
<!--ro, opt, string, dep:and,{$.SerialPort.serialPortUse,eq,acquisition}, attr:opt{req, string}-->modbus
</acquisitionProtocol>
<serialProtocol opt="FECbus,GB26875">
<!--ro, opt, enum, subType:string, attr:opt{req, string}-->GB26875
</serialProtocol>
<SupplementLightList size="5">
<!--ro, opt, array, subType:object, dep:and,{$.SerialPort.rs485WorkMode,eq,supplementLight}, attr:size{req, int}-->
<SupplementLight>
<!--ro, opt, object-->
<SupplementLightID min="1" max="5">
<!--ro, req, int, range:[1,5], attr:min{req, int},max{req, int}-->1
</SupplementLightID>
</SupplementLight>
</SupplementLightList>
<permissionController opt="0,1">
<!--ro, opt, enum, subType:int, attr:opt{req, string}-->1
</permissionController>
<deviceModel min="0" max="32">
<deviceModel min="0" max="32">
<!--ro, opt, string, attr:min{req, int},max{req, int}-->test
</deviceModel>
<deviceSoftwareVersion min="0" max="32">
<!--ro, opt, string, attr:min{req, int},max{req, int}-->test
</deviceSoftwareVersion>
<audibleVisualAlarmType opt="CIRCLE,AFE80,AFE82,XY">
<!--ro, opt, enum, CIRCLE; AFE80; AFE82; XY, subType:string, attr:opt{req, string}, desc:CIRCLE; AFE80; AFE82; XY-->CIRCLE
</audibleVisualAlarmType>
<cardReaderType opt="K1108AM">
<!--ro, opt, string, attr:opt{req, string}-->test
</cardReaderType>
<strongElectricType opt="19M04-RO/T,19M08-RO/T">
<!--ro, opt, string, attr:opt{req, string}-->test
</strongElectricType>
<signalLampControl>

m
<!--ro, opt, object, dep:and,{$.SerialPort.rs485WorkMode,eq,signalLampControl}-->

co
<protocolType opt="GB920,Hisense,LESER,JERE">
<!--ro, opt, enum, subType:string, attr:opt{req, string}-->GB920
</protocolType>

a.
</signalLampControl>
</SerialPort>

C. arc
16.1.8.3 Set the parameters of a specific serial port supported by the device

s, em
Request URL

A
no fr
PUT /ISAPI/System/Serial/ports/<portID>?permissionController=<indexID>&childDevID=<childDevID>

ri on
Query Parameter
Parameter Name Parameter Type Description
portID string Ma oc --
up
indexID string --
co gr

childDevID string --
es a@
Fr rc

Request Message
s
y ema

<?xml version="1.0" encoding="UTF-8"?>

<SerialPort xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--opt, object, port, attr:version{req, string, protocolVersion}-->
os fr

<id>
<!--req, int, serial port ID-->0
ad on

</id>
<enabled>
<!--opt, bool, whether to enable the function-->true
el .c

</enabled>
<encryptKey>
<!--opt, string-->test
ez

</encryptKey>
<serialNumber>
<!--opt, int, serial No.-->0
en

</serialNumber>
<serialPortType>
im

<!--opt, enum, serial port type: "RS485","RS422","RS232", subType:string, desc:serial port type: "RS485","RS422","RS232"-->RS485
</serialPortType>
ng

<serialAddress>
Aj

<!--opt, int-->1
</serialAddress>
Co

<duplexMode>
<!--opt, enum, duplex mode of the serial port, subType:string, desc:"half", "full”-->half
</duplexMode>
<direction>
<!--opt, enum, "monodirectional,bdirectional", subType:string, desc:"monodirectional, bdirectional”-->monodirectional
</direction>
<baudRate>
<!--opt, enum, subType:int-->2400
</baudRate>
<dataBits>
<!--opt, int-->6
</dataBits>
<parityType>
<!--opt, enum, parity type, subType:string, desc:"none, even, odd, mark, space”-->none
</parityType>
<stopBits>
<!--opt, string, stop bit: "1,1.5,2"-->1
</stopBits>
<workMode>
<!--opt, enum, work mode, subType:string, desc:working mode: "console","transparent","audiomixer","stairsControl"-elevator control,"cardReader"-card
reader,"disabled","custom". This node is required only when <serialPortType> is set to "RS232"-->console
</workMode>
<flowCtrl>
<!--opt, enum, "none,software,hardware", subType:string, desc:"none, software, hardware”-->none
</flowCtrl>
<rs485WorkMode>
<!--opt, enum, working mode of RS-485 serial port, which is used for LED display or triggering transmission of captured pictures: "Led, CaptureTrigger".
This node is valid only when <serialPortType> is "RS485", subType:string, dep:or,{$.SerialPort.serialPortType,eq,RS485}, desc:working mode of RS-485 serial
port,which is used for LED display or triggering transmission of captured pictures: "Led,CaptureTrigger". This node is valid only when <serialPortType> is
"RS485"-->sensor
</rs485WorkMode>
<copyToAll>
<!--opt, bool-->true
</copyToAll>
<audiomixerProtocolType>
<!--opt, enum, subType:string-->test
</audiomixerProtocolType>
<deviceName>
<!--ro, opt, string-->test

m
</deviceName>

co
<deviceType>
<!--ro, opt, int-->1
</deviceType>

a.
<deviceProtocol>
<!--ro, opt, int-->1
</deviceProtocol>

C. arc
<mode>
<!--opt, enum, work mode, subType:string, desc:deq,working mode: "readerMode,clientMode,externMode,accessControlHost,disabled",this node is valid only
when <serialPortType> is "RS485"-->readerMode
</mode>

s, em
<outputDataType>

A
<!--opt, enum, output data type, subType:string, dep:and,{$.SerialPort.mode,eq,accessControlHost}, desc:"cardNo,employeeNo", this node is valid when

no fr
<mode>is "accessControlHost”-->cardNo
</outputDataType>
<isVariable>

ri on
<!--opt, bool-->true
</isVariable>
<PTZInfo>

Ma oc
<!--opt, object, PTZ information-->
<bindChannelNo>
up
<!--req, int-->0
</bindChannelNo>
<PTZProtocolList>
co gr

<!--req, object-->
<PTZProtocol>
<!--opt, object-->
es a@

<id>
<!--req, int, serial port ID-->0
</id>
Fr rc

<protoDesc>
<!--req, string-->test
y ema

</protoDesc>
</PTZProtocol>
</PTZProtocolList>
</PTZInfo>
os fr

<ScreenCtrlInfo>
<!--opt, object-->
<ScreenCtrlProtoList>
ad on

<!--req, object-->
<ScreenCtrlProto>
<!--opt, object-->
el .c

<id>
<!--req, int, serial port ID-->0
ez

</id>
<protoDesc>
<!--req, string-->test
en

</protoDesc>
</ScreenCtrlProto>
</ScreenCtrlProtoList>
im

</ScreenCtrlInfo>
ng

<MatrixCtrlInfo>
Aj

<!--opt, object-->
<MatrixCtrlProtoList>
Co

<!--req, object-->
<MatrixCtrlProto>
<!--opt, object-->
<id>
<!--req, int, serial port ID-->0
</id>
<protoDesc>
<!--req, string-->test
</protoDesc>
</MatrixCtrlProto>
</MatrixCtrlProtoList>
</MatrixCtrlInfo>
<KeyBoardCtrlInfo>
<!--opt, object-->
<KeyBoardCtrlProtoList>
<!--req, object-->
<KeyBoardCtrlProto>
<!--opt, object-->
<id>
<!--req, int, serial port ID-->0
</id>
<protoDesc>
<!--req, string-->test
</protoDesc>
</protoDesc>
</KeyBoardCtrlProto>
</KeyBoardCtrlProtoList>
</KeyBoardCtrlInfo>
<ControlAddress>
<!--opt, object-->
<enabled>
<!--req, bool, whether to enable the function-->true
</enabled>
<address>
<!--req, int, address, range:[0,255]-->1
</address>
</ControlAddress>
<SensorCtrlList>
<!--opt, object-->
<Sensor>

m
<!--opt, object-->
<id>

co
<!--req, int, ID, range:[1,3]-->1
</id>

a.
<name>
<!--req, string, sensor name, range:[1,32]-->visibilitySensor
</name>

C. arc
<enabled>
<!--req, bool, whether to enable the function, desc:whether to enable the serial port: "true,false"-->false
</enabled>
</Sensor>

s, em
</SensorCtrlList>
<stairsControl>

A
<!--opt, object, elevator control parameters, this node is valid when the value of the node <mode> is stairsControl, dep:and,

no fr
{$.SerialPort.mode,eq,stairsControl}-->
<outputDataType>

ri on
<!--opt, enum, output data type, subType:string, desc:"cardNo,employeeNo", this node is valid when <mode>is "accessControlHost”-->floorNumber
</outputDataType>
</stairsControl>

Ma oc
<comMode>
<!--opt, enum, subType:string-->active
</comMode>
up
<ModbusRTU>
<!--opt, object, dep:and,{$.SerialPort.rs485WorkMode,eq,ModbusRTU}-->
<ModbusRTUBaudRate>
co gr

<!--opt, enum, subType:string-->9600


</ModbusRTUBaudRate>
es a@

<ModbusRTUDataBits>
<!--opt, enum, subType:int-->6
</ModbusRTUDataBits>
Fr rc

<ModbusRTUParityType>
<!--opt, enum, subType:string-->none
</ModbusRTUParityType>
y ema

<ModbusRTUStopBits>
<!--opt, enum, subType:string-->1
</ModbusRTUStopBits>
<ModbusRTUFlowCtrl>
os fr

<!--opt, enum, subType:string-->none


</ModbusRTUFlowCtrl>
ad on

<decoderAddress>
<!--opt, int, range:[0,255]-->0
</decoderAddress>
el .c

</ModbusRTU>
<controlProtocol>
<!--opt, string-->test
ez

</controlProtocol>
<accessName>
en

<!--opt, string, range:[1,32]-->test


</accessName>
<serialPortUse>
im

<!--opt, enum, subType:string-->acquisition


</serialPortUse>
ng

<acquisitionProtocol>
Aj

<!--opt, enum, subType:string, dep:and,{$.SerialPort.serialPortUse,eq,acquisition}-->modbus


</acquisitionProtocol>
Co

<serialProtocol>
<!--opt, enum, subType:string-->GB26875
</serialProtocol>
<SupplementLightList>
<!--opt, array, subType:object, dep:and,{$.SerialPort.rs485WorkMode,eq,supplementLight}-->
<SupplementLight>
<!--opt, object-->
<SupplementLightID>
<!--req, int, range:[1,5]-->1
</SupplementLightID>
</SupplementLight>
</SupplementLightList>
<cardReaderType>
<!--opt, enum, subType:string-->K1108AM
</cardReaderType>
</SerialPort>

Response Message
<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, response message, attr:version{ro, req, string, protocolVersion}-->
<requestURL>
<!--ro, req, string, request URL-->null
</requestURL>
<statusCode>
<!--ro, req, enum, status code, subType:int, desc:0 (OK), 1 (OK), 2 (Device Busy), 3 (Device Error), 4 (Invalid Operation), 5 (Invalid XML Format), 6
(Invalid XML Content), 7 (Reboot Required)-->0
</statusCode>
<statusString>
<!--ro, req, enum, status description, subType:string, desc:“OK” (succeeded), “Device Busy”, “Device Error”, “Invalid Operation”, “Invalid XML Format”,
“Invalid XML Content”, “Reboot” (reboot device)-->OK

m
</statusString>
<subStatusCode>

co
<!--ro, req, string, error reason description in detail, desc:error reason description in detail-->OK
</subStatusCode>

a.
</ResponseStatus>

C. arc
16.1.8.4 Get the parameters of a specific port supported by the device
Request URL

s, em
A
GET /ISAPI/System/Serial/ports/<portID>?permissionController=<indexID>&childDevID=<childDevID>

no fr
Query Parameter

ri on
Parameter Name Parameter Type Description
portID string
Ma oc --
up
indexID string --
co gr

childDevID string --
es a@

Request Message
Fr rc

None
y ema

Response Message

<?xml version="1.0" encoding="UTF-8"?>


os fr

<SerialPort xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, opt, object, port, attr:version{req, string, protocolVersion}-->
ad on

<id>
<!--ro, req, int, serial port ID-->0
el .c

</id>
<enabled>
<!--ro, opt, bool, whether to enable the serial port-->true
ez

</enabled>
<encryptKey>
<!--ro, opt, string-->test
en

</encryptKey>
<serialNumber>
im

<!--ro, opt, int, serial No.-->0


</serialNumber>
ng

<serialPortType>
Aj

<!--ro, opt, enum, serial port type, subType:string, desc:"RS485", "RS422", "RS232”-->RS485
</serialPortType>
Co

<serialAddress>
<!--ro, opt, int-->1
</serialAddress>
<duplexMode>
<!--ro, opt, enum, duplex mode of the serial port, subType:string, desc:"half", "full”-->half
</duplexMode>
<direction>
<!--ro, opt, enum, "monodirectional,bdirectional", subType:string, desc:"monodirectional”, “bdirectional”-->monodirectional
</direction>
<baudRate>
<!--ro, opt, enum, subType:int-->2400
</baudRate>
<dataBits>
<!--ro, opt, int-->6
</dataBits>
<parityType>
<!--ro, opt, enum, parity type, subType:string, desc:parity type: "none,even,odd,mark,space"-->none
</parityType>
<stopBits>
<!--ro, opt, enum, stop bit, subType:string, desc:stop bit-->1
</stopBits>
<workMode>
<!--ro, opt, enum, working mode, subType:string, desc:"console", "transparent", "audiomixer", “screenCtrl”, “ptzCtrl”, “keyboard”, “matrix”,
“audioMixers”-->console
</workMode>
<flowCtrl>
<!--ro, opt, enum, "none,software,hardware", subType:string, desc:"none”, “software”, “hardware”-->none
</flowCtrl>
<rs485WorkMode>
<!--ro, opt, enum, working mode of RS-485 serial port, subType:string, dep:or,{$.SerialPort.serialPortType,eq,RS485}, desc:working mode of RS-485 serial
port,which is used for LED display or triggering transmission of captured pictures: "Led,CaptureTrigger". This node is valid only when <serialPortType> is
"RS485"-->sensor
</rs485WorkMode>
<copyToAll>
<!--ro, opt, bool-->true
</copyToAll>
<audiomixerProtocolType>
<!--ro, opt, enum, subType:string-->test
</audiomixerProtocolType>

m
<deviceName>

co
<!--ro, opt, string-->test
</deviceName>
<deviceType>

a.
<!--ro, opt, int-->1
</deviceType>
<deviceProtocol>

C. arc
<!--ro, opt, int-->1
</deviceProtocol>
<mode>
<!--ro, opt, enum, working mode, subType:string, desc:deq,working mode: "readerMode,clientMode,externMode,accessControlHost,disabled",this node is valid

s, em
only when <serialPortType> is "RS485"-->readerMode

A
</mode>

no fr
<outputDataType>
<!--ro, opt, enum, output data type, subType:string, dep:and,{$.SerialPort.mode,eq,accessControlHost}, desc:output data type: "cardNo,employeeNo",this
node is valid when <mode>is "accessControlHost"-->cardNo

ri on
</outputDataType>
<isVariable>
<!--ro, opt, bool-->true

Ma oc
</isVariable>
<PTZInfo>
up
<!--ro, opt, object, PTZ information-->
<bindChannelNo>
<!--ro, req, int-->0
co gr

</bindChannelNo>
<PTZProtocolList>
<!--ro, req, object-->
es a@

<PTZProtocol>
<!--ro, opt, object-->
<id>
Fr rc

<!--ro, req, int, serial port ID-->0


</id>
y ema

<protoDesc>
<!--ro, req, string-->test
</protoDesc>
</PTZProtocol>
os fr

</PTZProtocolList>
</PTZInfo>
<ScreenCtrlInfo>
ad on

<!--ro, opt, object-->


<ScreenCtrlProtoList>
<!--ro, req, object-->
el .c

<ScreenCtrlProto>
<!--ro, opt, object-->
ez

<id>
<!--ro, req, int, serial port ID-->0
</id>
en

<protoDesc>
<!--ro, req, string-->test
</protoDesc>
im

</ScreenCtrlProto>
</ScreenCtrlProtoList>
ng
Aj

</ScreenCtrlInfo>
<MatrixCtrlInfo>
Co

<!--ro, opt, object-->


<MatrixCtrlProtoList>
<!--ro, req, object-->
<MatrixCtrlProto>
<!--ro, opt, object-->
<id>
<!--ro, req, int, serial port ID-->0
</id>
<protoDesc>
<!--ro, req, string-->test
</protoDesc>
</MatrixCtrlProto>
</MatrixCtrlProtoList>
</MatrixCtrlInfo>
<KeyBoardCtrlInfo>
<!--ro, opt, object-->
<KeyBoardCtrlProtoList>
<!--ro, req, object-->
<KeyBoardCtrlProto>
<!--ro, opt, object-->
<id>
<!--ro, req, int, serial port ID-->0
</id>
<protoDesc>
<protoDesc>
<!--ro, req, string-->test
</protoDesc>
</KeyBoardCtrlProto>
</KeyBoardCtrlProtoList>
</KeyBoardCtrlInfo>
<ControlAddress>
<!--ro, opt, object-->
<enabled>
<!--ro, req, bool, whether to enable the serial port-->true
</enabled>
<address>
<!--ro, req, int, address, range:[0,255]-->0
</address>
</ControlAddress>
<SensorCtrlList>

m
<!--ro, opt, object-->
<Sensor>

co
<!--ro, opt, object-->
<id>

a.
<!--ro, req, int, serial port ID, range:[1,3]-->1
</id>
<name>

C. arc
<!--ro, req, string, sensor name, range:[1,32], desc:sensor name-->visibilitySensor
</name>
<enabled>
<!--ro, req, bool, whether to enable the function, desc:whether to enable the serial port: "true,false"-->false

s, em
</enabled>
</Sensor>

A
</SensorCtrlList>

no fr
<stairsControl>
<!--ro, opt, object, elevator control parameters, dep:and,{$.SerialPort.mode,eq,stairsControl}-->
<outputDataType>

ri on
<!--ro, opt, enum, output data type, subType:string, desc:output data type: "cardNo,employeeNo",this node is valid when <mode>is "accessControlHost"--
>floorNumber

Ma oc
</outputDataType>
</stairsControl>
<comMode>
up
<!--ro, opt, enum, subType:string-->active
</comMode>
<ModbusRTU>
co gr

<!--ro, opt, object, dep:and,{$.SerialPort.rs485WorkMode,eq,ModbusRTU}-->


<ModbusRTUBaudRate>
es a@

<!--ro, opt, enum, subType:string-->9600


</ModbusRTUBaudRate>
<ModbusRTUDataBits>
Fr rc

<!--ro, opt, enum, subType:int-->6


</ModbusRTUDataBits>
<ModbusRTUParityType>
y ema

<!--ro, opt, enum, subType:string-->none


</ModbusRTUParityType>
<ModbusRTUStopBits>
<!--ro, opt, enum, subType:string-->1
os fr

</ModbusRTUStopBits>
<ModbusRTUFlowCtrl>
ad on

<!--ro, opt, enum, subType:string-->none


</ModbusRTUFlowCtrl>
<decoderAddress>
el .c

<!--ro, opt, int, range:[0,255]-->0


</decoderAddress>
<online>
ez

<!--ro, opt, bool-->true


</online>
</ModbusRTU>
en

<controlProtocol>
<!--ro, opt, enum, subType:string-->test
im

</controlProtocol>
<accessName>
ng

<!--ro, opt, string, range:[1,32]-->test


Aj

</accessName>
<serialPortUse>
Co

<!--ro, opt, enum, subType:string-->acquAndCtrl


</serialPortUse>
<serialProtocol>
<!--ro, opt, enum, subType:string-->GB26875
</serialProtocol>
<SupplementLightList>
<!--ro, opt, array, subType:object, dep:and,{$.SerialPort.rs485WorkMode,eq,supplementLight}-->
<SupplementLight>
<!--ro, opt, object-->
<SupplementLightID>
<!--ro, req, int, range:[1,5]-->1
</SupplementLightID>
</SupplementLight>
</SupplementLightList>
<cardReaderType>
<!--ro, opt, enum, subType:string-->K1108AM
</cardReaderType>
<strongElectricType>
<!--ro, opt, enum, subType:string-->19M04-RO/T
</strongElectricType>
<signalLampControl>
<!--ro, opt, object, dep:and,{$.SerialPort.rs485WorkMode,eq,signalLampControl}-->
<protocolType>
<protocolType>
<!--ro, opt, enum, subType:string-->GB920
</protocolType>
</signalLampControl>
</SerialPort>

16.1.8.5 Get the list of serial ports supported by the device


Request URL
GET /ISAPI/System/Serial/ports?permissionController=<indexID>
Query Parameter

m
Parameter Name Parameter Type Description

co
indexID string --

a.
Request Message

C. arc
None

s, em
Response Message

A
no fr
<?xml version="1.0" encoding="UTF-8"?>
<SerialPortList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">

ri on
<!--ro, opt, object, see details in the message of XML_SerialPort, attr:version{req, string, protocolVersion}-->
<SerialPort>
<!--ro, opt, object, port-->

Ma oc
<id>
<!--ro, req, int-->0
</id>
up
<enabled>
<!--ro, opt, bool, whether to enable the function-->true
co gr

</enabled>
<encryptKey>
<!--ro, opt, string-->test
es a@

</encryptKey>
<serialNumber>
<!--ro, opt, int, serial No.-->0
Fr rc

</serialNumber>
<serialPortType>
y ema

<!--ro, opt, enum, subType:string-->RS485


</serialPortType>
<serialAddress>
<!--ro, opt, int-->1
</serialAddress>
os fr

<duplexMode>
<!--ro, opt, enum, subType:string-->half
ad on

</duplexMode>
<direction>
<!--ro, opt, enum, subType:string-->monodirectional
el .c

</direction>
<baudRate>
<!--ro, opt, enum, subType:int-->2400
ez

</baudRate>
<dataBits>
en

<!--ro, opt, int-->6


</dataBits>
<parityType>
im

<!--ro, opt, enum, subType:string-->none


</parityType>
ng

<stopBits>
Aj

<!--ro, opt, enum, subType:string-->1


Co

</stopBits>
<workMode>
<!--ro, opt, enum, work mode, subType:string, desc:work mode-->console
</workMode>
<flowCtrl>
<!--ro, opt, enum, subType:string-->none
</flowCtrl>
<rs485WorkMode>
<!--ro, opt, enum, subType:string, dep:or,{$.SerialPort.serialPortType,eq,RS485}-->sensor
</rs485WorkMode>
<copyToAll>
<!--ro, opt, bool-->true
</copyToAll>
<deviceName>
<!--ro, opt, string, device name-->test
</deviceName>
<deviceProtocol>
<!--ro, opt, int-->1
</deviceProtocol>
<mode>
<!--ro, opt, enum, work mode, subType:string, desc:work mode-->readerMode
</mode>
<outputDataType>
<!--ro, opt, enum, subType:string, dep:and,{$.SerialPort.mode,eq,accessControlHost}-->cardNo
<!--ro, opt, enum, subType:string, dep:and,{$.SerialPort.mode,eq,accessControlHost}-->cardNo
</outputDataType>
<isVariable>
<!--ro, opt, bool-->true
</isVariable>
<PTZInfo>
<!--ro, opt, object, PTZ information-->
<bindChannelNo>
<!--ro, req, int-->0
</bindChannelNo>
<PTZProtocolList>
<!--ro, req, object-->
<PTZProtocol>
<!--ro, opt, object-->
<id>
<!--ro, req, int-->0
</id>

m
<protoDesc>

co
<!--ro, req, string-->test
</protoDesc>
</PTZProtocol>

a.
</PTZProtocolList>
</PTZInfo>

C. arc
<ScreenCtrlInfo>
<!--ro, opt, object-->
<ScreenCtrlProtoList>
<!--ro, req, object-->

s, em
<ScreenCtrlProto>
<!--ro, opt, object-->

A
<id>

no fr
<!--ro, req, int-->0
</id>
<protoDesc>

ri on
<!--ro, req, string-->test
</protoDesc>

Ma oc
</ScreenCtrlProto>
</ScreenCtrlProtoList>
</ScreenCtrlInfo>
up
<MatrixCtrlInfo>
<!--ro, opt, object-->
<MatrixCtrlProtoList>
co gr

<!--ro, req, object-->


<MatrixCtrlProto>
<!--ro, opt, object-->
es a@

<id>
<!--ro, req, int-->0
Fr rc

</id>
s

<protoDesc>
<!--ro, req, string-->test
y ema

</protoDesc>
</MatrixCtrlProto>
</MatrixCtrlProtoList>
</MatrixCtrlInfo>
os fr

<KeyBoardCtrlInfo>
<!--ro, opt, object-->
<KeyBoardCtrlProtoList>
ad on

<!--ro, req, object-->


<KeyBoardCtrlProto>
el .c

<!--ro, opt, object-->


<id>
<!--ro, req, int-->0
ez

</id>
<protoDesc>
<!--ro, req, string-->test
en

</protoDesc>
</KeyBoardCtrlProto>
im

</KeyBoardCtrlProtoList>
</KeyBoardCtrlInfo>
ng

<ControlAddress>
Aj

<!--ro, opt, object-->


<enabled>
Co

<!--ro, req, bool, whether to enable the function-->true


</enabled>
<address>
<!--ro, req, int, address, range:[0,255]-->1
</address>
</ControlAddress>
<SensorCtrlList>
<!--ro, opt, object-->
<Sensor>
<!--ro, opt, object-->
<id>
<!--ro, req, int, ID, range:[1,3]-->1
</id>
<name>
<!--ro, req, string, sensor name, range:[1,32], desc:sensor name-->visibilitySensor
</name>
<enabled>
<!--ro, req, bool-->false
</enabled>
</Sensor>
</SensorCtrlList>
<stairsControl>
<!--ro, opt, object, dep:and,{$.SerialPort.mode,eq,stairsControl}-->
<outputDataType>
<!--ro, opt, enum, subType:string-->floorNumber
</outputDataType>
</stairsControl>
<comMode>
<!--ro, opt, enum, subType:string-->active
</comMode>
<ModbusRTU>
<!--ro, opt, object, dep:and,{$.SerialPortList.SerialPort.rs485WorkMode,eq,ModbusRTU}-->
<ModbusRTUBaudRate>
<!--ro, opt, enum, subType:string-->9600
</ModbusRTUBaudRate>
<ModbusRTUDataBits>
<!--ro, opt, enum, subType:int-->6
</ModbusRTUDataBits>
<ModbusRTUParityType>

m
<!--ro, opt, enum, subType:string-->none

co
</ModbusRTUParityType>
<ModbusRTUStopBits>
<!--ro, opt, enum, subType:string-->1

a.
</ModbusRTUStopBits>
<ModbusRTUFlowCtrl>
<!--ro, opt, enum, subType:string-->none

C. arc
</ModbusRTUFlowCtrl>
<decoderAddress>
<!--ro, opt, int, range:[0,255]-->0
</decoderAddress>

s, em
<online>
<!--ro, opt, bool-->true

A
no fr
</online>
</ModbusRTU>
<accessName>

ri on
<!--ro, opt, string, range:[1,32]-->test
</accessName>
<serialPortUse>

Ma oc
<!--ro, opt, enum, subType:string-->acquAndCtrl
</serialPortUse>
<serialProtocol>
up
<!--ro, opt, enum, subType:string-->GB26875
</serialProtocol>
co gr

<SupplementLightList>
<!--ro, opt, array, subType:object, dep:and,{$.SerialPort.rs485WorkMode,eq,supplementLight}-->
<SupplementLight>
es a@

<!--ro, opt, object-->


<SupplementLightID>
<!--ro, req, int, range:[1,5]-->1
Fr rc

</SupplementLightID>
</SupplementLight>
y ema

</SupplementLightList>
<cardReaderType>
<!--ro, opt, enum, subType:string-->K1108AM
</cardReaderType>
os fr

<strongElectricType>
<!--ro, opt, enum, subType:string-->19M04-RO/T
</strongElectricType>
ad on

</SerialPort>
</SerialPortList>
el .c
ez

16.1.9 System Maintenance


en

16.1.9.1 Get the storage capability of the device


im

Request URL
ng

GET /ISAPI/ContentMgmt/capabilities
Aj
Co

Query Parameter
None
Request Message
None
Response Message

<?xml version="1.0" encoding="UTF-8"?>


<RacmCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<!--ro, req, object, device storage capability, attr:version{req, string, protocolVersion}-->
<isSupportZeroChan>
<!--ro, opt, bool, whether the device supports channel-zero, desc:related URI: /ISAPI/ContentMgmt/ZeroVideo/channels-->true
</isSupportZeroChan>
<inputProxyNums>
<!--ro, opt, int, supported number of digital channels, desc:related URI: /ISAPI/ContentMgmt/InputProxy/channels/<ID>-->0
</inputProxyNums>
<eSATANums>
<!--ro, opt, int, supported number of eSATA interfaces-->0
</eSATANums>
</eSATANums>
<miniSASNums>
<!--ro, opt, int, supported number of miniSAS interfaces-->0
</miniSASNums>
<nasNums>
<!--ro, opt, int, supported number of NAS devices, desc:related URI: /ISAPI/ContentMgmt/Storage/nas-->0
</nasNums>
<ipSanNums>
<!--ro, opt, int, supported number of IPSANs-->0
</ipSanNums>
<isSupportRaid>
<!--ro, opt, bool, whether the device supports RAID-->true
</isSupportRaid>
<isSupportExtHdCfg>
<!--ro, opt, bool, whether the device supports advanced HDD management-->true
</isSupportExtHdCfg>
<isSupportTransCode>

m
<!--ro, opt, bool, whether the device supports live view transcoding-->true

co
</isSupportTransCode>
<isSupportIpcImport>
<!--ro, opt, bool, whether the device supports importing the configuration file of the network camera, desc:related URI:

a.
/ISAPI/ContentMgmt/InputProxy/ipcConfig-->true
</isSupportIpcImport>

C. arc
<NasMountType>
<!--ro, opt, bool, NAS type-->true
<isNFSSupportAuthentication>
<!--ro, opt, bool, whether the device supports NFS authentication-->true

s, em
</isNFSSupportAuthentication>
<isCIFSSupportAuthentication>

A
<!--ro, opt, bool, whether the device supports CIFS authentication-->true

no fr
</isCIFSSupportAuthentication>
</NasMountType>
<isSupportIpcStreamType>

ri on
<!--ro, opt, bool, whether the device supports the stream type of the network camera-->true
</isSupportIpcStreamType>
<isSupportIOInputProxy>

Ma oc
<!--ro, opt, bool, whether the device supports dynamic input channels, desc:related URI: /ISAPI/ContentMgmt/IOProxy/inputs-->true
</isSupportIOInputProxy>
up
<isSupportIOOutputProxy>
<!--ro, opt, bool, whether the device supports dynamic output channels, desc:related URI: /ISAPI/ContentMgmt/IOProxy/outputs-->true
</isSupportIOOutputProxy>
co gr

<isSupportPTZRs485Proxy>
<!--ro, opt, bool, whether the device supports dynamic PTZ RS-485 channels, desc:related URI: /ISAPI/ContentMgmt/PTZCtrlProxy/capabilities-->true
</isSupportPTZRs485Proxy>
es a@

<isSupportSrcIDSearch>
<!--ro, opt, bool, whether the device supports stream ID search-->true
Fr rc

</isSupportSrcIDSearch>
s

<isSupportReversePlayback>
<!--ro, opt, bool, whether the device supports reverse playback-->true
y ema

</isSupportReversePlayback>
<isSupportSMARTTest>
<!--ro, opt, bool, whether the device supports HDD detection, desc:related URI: /ISAPI/ContentMgmt/Storage/hdd/SMARTTest/config-->true
</isSupportSMARTTest>
os fr

<isSupportDownloadByTime>
<!--ro, opt, bool, whether the device supports downloading by time, desc:related URI: /ISAPI/ContentMgmt/download/capabilities-->true
</isSupportDownloadByTime>
ad on

<pictureSearchType
opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,FieldDetection,scenechangedetection,LineDetection,
el .c

regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,playSnapShot,safetyH
elmet,
personQueueCounting,personQueueTime,violentMotion,leavePosition,advReachHeight,peopleNumChange,mixedTargetDetection,illegalParking,pedestrian,construction,r
ez

oadblock,
abandonedObject,trafficAccident,fogDetection,smokeDetection,personDensity,failDown,accessController,videoInterCom,GJD,Luminite,OPTEX,securityControlPanel,ge
tUp,toiletTarry,
en

playCellphone,vehicleMonitor,vibrationDetection,running,retention,spacingChange,yardTarry,keyPersonGetUp,sitQuietly,standUp,plateRecognition,smoking,onThePh
one,fatigueDriving,
im

notLookingStraightAhead,leaveThePost,seatBelt,sunglasses,identityAbnormal,ForwardCollisionWarning,LaneDepartureWarning,BlindSpotDetection,HeadwayMonitoringW
arning,
ng

PedestrianCollisionWarning,SuddenSpeedUp,SuddenSpeedDown,SuddenLeftTurn,SuddenRightTurn,Turnover,NotYieldToPedestrian,unregisteredStreetVendor,stallOutsideS
Aj

hop,stallOccupyingRoad, illegalHeap,illegalParkingofNon-
MotorVehicle,illegalOutdoorAdvertisement,packGarbage,stallUnderUmbrella,dustbinOverflow,exposeGarbage,hangClothingAlongStreet,allPic,ATMPanel,
Co

ATMSurround,ATMFace,ATMSafetyCabin,loitering,smokeDetectAlarm,temperatureIntervalMeasurement,AIOP,tail,abnormalFace,normalFace,multiFace,callFace,sunglasses
Face,humanEnter,operateOverTime,stickUp,installScanner,objectPlacedOrTaken,fakeCard,securityChecking,pothole,crack,roadMaint,imageCapture,methaneConcentrati
onException,methaneLightIntensityException,bannerDetection,variableDataEvent,shipChannelAbnormal,radarVideoDetection,smokeAndFireDetection,smokeDetection,se
nsorAlarm,alarmResult,AIOP_Video,AIOP_Polling_Snap,swipePatrol,BatteryCarInfoEvent,indoorPasswayBlock,detectorTemperatureAlarm,fireNoRegulation,detectorMoti
onAlarm,detectorShelterAlarm,detectorRunningStatus,faceCapture,UVPhotonDetection,DevPowerStatusReport,HFPD,audioAnalysis,IndoorPasswayRecovery,BatteryCarRec
overy,DetectorTemperatureRecovery,RadarFallenObjectsOnTracks,VegetationSpectrumDetection,personDensityDetection,ChannelClearEvent,channelOccupy,ChannelPassi
ngEvent,FallenObjectsOnTracksEvent,audioexception,CarWindow">
<!--ro, opt, enum, picture search type, subType:string, attr:opt{req, string}, desc:"AllEvent", "CMR", "MOTION", "ALARM", "EDR", "ALARMANDMOTION",
"pir:PIR", "wlsensor", "callhelp", "facedetection", "FieldDetection", "scenechangedetection", "LineDetection", "regionEntrance", "regionExiting",
"loitering", "group", "rapidMove", "parking", "unattendedBaggage", "attendedBaggage", "vehicleDetection", "manual", "manualSnapShot", "playSnapShot",
"safetyHelmet", "personQueueCounting", "personQueueTime", "violentMotion", "leavePosition", "advReachHeight", "peopleNumChange", "mixedTargetDetection",
"illegalParking", "pedestrian", "construction", "roadblock", "evidence", "crosslane", "vehicleexist", "lanechange", "wrongdirection", "congestion",
"turnround", "parallelParking", "abandonedObject", "trafficAccident", "fogDetection", "smokeDetection", "personDensity", "failDown", "accessController",
"videoInterCom", "GJD", "Luminite", "OPTEX", "securityControlPanel", "getUp", "toiletTarry", "playCellphone", "vehicleMonitor", "running", "retention",
"spacingChange", "yardTarry", "keyPersonGetUp", "sitQuietly", "standup", "plateRecognition", "smoking", "onThePhone", "fatigueDriving",
"notLookingStraightAhead", "leaveThePost", "seatbelt", "sunglasses", "identityAbnormal", "ForwardCollisionWarning", "LaneDepartureWarning",
"BlindSpotDetection", "HeadwayMonitoringWarning", "PedestrianCollisionWarning", "SuddenSpeedUp", "SuddenSpeedDown", "SuddenLeftTurn", "SuddenRightTurn",
"Turnover", "NotYieldToPedestrian;allPic", "ATMPanel", "ATMSurround", "ATMFace", "ATMSafetyCabin", "smokeDetectAlarm", "temperatureIntervalMeasurement",
"AIOP", "tail", "abnormalFace", "normalFace;callFace", "sunglassesFace", "humanEnter", "operateOverTime", "stickup", "installScanner",
"objectPlacedOrTaken", "fakeCard", "securityChecking", "pothole", "crack", "roadMaint", "imageCapture", "ReID", "thermalVehicleDetection",
"methaneConcentrationException", "methaneLightIntensityException", "bannerDetection", "waterQualityDetection", "waterLevelDetection", "parallelParking",
"methaneConcentrationException", "variableDataEvent", "VOCsGasDetection", "shipChannelAbnormal", "radarVideoDetection", "AIDfogDetection:AID",
"smokeAndFireDetection", "smokeDetection", "sensorAlarm", "GasTankDetection", "alarmResult", "AIOP_Video", "AIOP_Polling_Snap", "swipePatrol",
"BatteryCarInfoEvent", "indoorPasswayBlock", "detectorTemperatureAlarm", "fireNoRegulation", "detectorMotionAlarm", "detectorShelterAlarm",
"BatteryCarInfoEvent", "indoorPasswayBlock", "detectorTemperatureAlarm", "fireNoRegulation", "detectorMotionAlarm", "detectorShelterAlarm",
"detectorRunningStatus", "faceCapture", "UVPhotonDetection", "DevPowerStatusReport", 'HFPD"-->AllEvent
</pictureSearchType>
<recordSearchType
opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,FieldDetection,scenechangedetection,LineDetection,
regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,playSnapShot,safetyH
elmet,
failDown,personDensityDetection,smokeDetection,vibrationDetection,unregisteredStreetVendor,stallOutsideShop,stallOccupyingRoad,illegalHeap,illegalParkingofN
on-MotorVehicle,
illegalOutdoorAdvertisement,packGarbage,stallUnderUmbrella,dustbinOverflow,exposeGarbage,hangClothingAlongStreet,ATMPanel,ATMSurround,ATMFace,ATMSafetyCabin
,temperatureIntervalMeasurement,AIOP,securityChecking,scheduledRecordUpload,variableDataEvent,smokeAndFireDetection,smokeDetection,AIOP_Video,AIOP_Polling_S
nap,BatteryCarInfoEvent,indoorPasswayBlock,detectorTemperatureAlarm,fireNoRegulation,detectorMotionAlarm,detectorShelterAlarm,detectorRunningStatus,faceCapt
ure,UVPhotonDetection,DevPowerStatusReport,ChannelClearEvent,channelOccupy,ChannelPassingEvent">
<!--ro, opt, enum, video search type, subType:string, attr:opt{req, string}, desc:"AllEvent", "CMR", "MOTION", "ALARM", "EDR", "ALARMANDMOTION", "pir",
"wlsensor", "callhelp", "facedetection", "FieldDetection", "scenechangedetection", "LineDetection", "regionEntrance", "regionExiting", "loitering", "group",
"rapidMove", "parking", "unattendedBaggage", "attendedBaggage", "vehicleDetection", "manual", "manualSnapShot", "playSnapShot", "safetyHelmet",

m
"personDensityDetection", "smokeDetection", "ATMPanel", "ATMSurround", "ATMFace", "ATMSafetyCabin", "temperatureIntervalMeasurement", "AIOP",

co
"securityChecking", "scheduledRecordUpload", "thermalVehicleDetection", "waterQualityDetection", "waterLevelDetection", "methaneConcentrationException",
"variableDataEvent", "smokeAndFireDetection", "smokeDetection", "sensorAlarm", "parallelParking", "parallelParkingContinuousRecord", "GasTankDetection",
"AIOP_Video", "AIOP_Polling_Snap", "BatteryCarInfoEvent", "indoorPasswayBlock", "detectorTemperatureAlarm", "fireNoRegulation", "detectorMotionAlarm",

a.
"detectorShelterAlarm", "detectorRunningStatus", ''faceCapture", "UVPhotonDetection", "DevPowerStatusReport"-->AllEvent
</recordSearchType>
<isSupportActivateIpc>

C. arc
<!--ro, opt, bool, whether the device supports activating the network camera-->true
</isSupportActivateIpc>
<isSupportCheckIpcSecurity>
<!--ro, opt, object, whether the device supports IPC security verification-->

s, em
<isSupportCheckPassword>
<!--ro, opt, bool, whether the device supports password detection-->true

A
</isSupportCheckPassword>

no fr
</isSupportCheckIpcSecurity>
<isSupportMainAndSubRecord>

ri on
<!--ro, opt, bool, whether the device supports the main stream and sub-stream recording-->true
</isSupportMainAndSubRecord>
<isSupportSyncIPCPassword>

Ma oc
<!--ro, opt, bool, whether the device supports synchronizing the password of the network camera-->true
</isSupportSyncIPCPassword>
<isSupportTransferIPC>
up
<!--ro, opt, bool, whether the device supports transparent transmission of the network camera-->true
</isSupportTransferIPC>
co gr

<isSupportSmartSearch>
<!--ro, opt, bool, whether the device supports video dual-VCA, desc:related URI: /ISAPI/ContentMgmt/SmartSearch/capabilities-->true
</isSupportSmartSearch>
es a@

<isSupportPOS>
<!--ro, opt, bool, whether the device supports POS-->true
</isSupportPOS>
Fr rc

<isSupportLinkNum>
<!--ro, opt, bool, whether the device supports getting the number of links, desc:related URI: /ISAPI/ContentMgmt/InputProxy/channels/<ID>/linkNum-->true
y ema

</isSupportLinkNum>
<isSupportPassBackBasicCfg>
<!--ro, opt, bool, whether the device supports configuring basic parameters of the CVR copy-back function, desc:related URI:
/ISAPI/ContentMgmt/record/passback/basicCfg/capabilities-->true
os fr

</isSupportPassBackBasicCfg>
<PassBackTaskConfig>
<!--ro, opt, object, capability of managing tasks of the CVR copy-back function-->
ad on

<isSupportAddTask>
<!--ro, opt, bool, whether the device supports adding a task, desc:related URI: /ISAPI/ContentMgmt/record/passback/addTask/capabilities-->true
</isSupportAddTask>
el .c

<isSupportSearchTask>
<!--ro, opt, bool, whether the device supports searching tasks, desc:related URI: /ISAPI/ContentMgmt/record/passback/searchTask/capabilities-->true
</isSupportSearchTask>
ez

<isSupportControlTask>
<!--ro, opt, bool, whether the device supports controlling the task, desc:related URI: /ISAPI/ContentMgmt/record/passback/controlTask/capabilities--
en

>true
</isSupportControlTask>
<isSupportDeleteTask>
im

<!--ro, opt, bool, whether the device supports deleting the task, desc:related URI: /ISAPI/ContentMgmt/record/passback/deleteTask/capabilities-->true
</isSupportDeleteTask>
ng

</PassBackTaskConfig>
Aj

<PassBackPlanConfig>
Co

<!--ro, opt, object, capability of configuring the CVR copy-back schedule-->


<isSupportAddPlan>
<!--ro, opt, bool, whether the device supports adding a schedule, desc:related URI: /ISAPI/ContentMgmt/record/passback/addPlan/capabilities-->true
</isSupportAddPlan>
<isSupportSearchPlan>
<!--ro, opt, bool, whether the device supports searching schedules, desc:related URI: /ISAPI/ContentMgmt/record/passback/searchPlan/capabilities--
>true
</isSupportSearchPlan>
<isSupportDeletePlan>
<!--ro, opt, bool, whether the device supports deleting the schedule, desc:related URI: /ISAPI/ContentMgmt/record/passback/deletePlan/capabilities--
>true
</isSupportDeletePlan>
</PassBackPlanConfig>
<IRAIDCap>
<!--ro, opt, object, network array capability-->
<isSupportIRAIDRapidConfiguration>
<!--ro, opt, bool, whether the device supports the rapid IRAID configuration, desc:related URI:
/ISAPI/ContentMgmt/Storage/IRAID/RapidConfiguration/capabilities-->true
</isSupportIRAIDRapidConfiguration>
</IRAIDCap>
<isSupportStorageExtraInfo>
<!--ro, opt, bool, whether the device supports configuring additional storage information, desc:related URI:
/ISAPI/ContentMgmt/Storage/ExtraInfo/capabilities-->true
</isSupportStorageExtraInfo>
</isSupportStorageExtraInfo>
<isSupportRecordStatus>
<!--ro, opt, bool, whether the device supports getting the recording status, desc:related URI: /ISAPI/ContentMgmt/channels/<ID>/record/capabilities--
>true
</isSupportRecordStatus>
<isSupportRacmChannelsCap opt="true,false">
<!--ro, opt, bool, whether the device supports the Rcam capability by channel, attr:opt{opt, string}, desc:related URI:
/ISAPI/ContentMgmt/channels/<ID>/capabilities-->true
</isSupportRacmChannelsCap>
<LockCap>
<!--ro, opt, object, capability of locking and unlocking video, desc:/ISAPI/ContentMgmt/record/control/locks/capabilities-->
<LockByName>
<!--ro, opt, object, lock/unlock video by file name-->
<TrackId>
<!--ro, req, string, channel stream ID, desc:channel No. * 100 + stream type (-1: main stream, -2: sub-stream)-->101
</TrackId>
<recordName min="1" max="100">

m
<!--ro, req, string, video file name, range:[1,100], attr:min{req, int},max{req, int}-->test

co
</recordName>
<command opt="lock,unlock">
<!--ro, req, enum, operation command, subType:string, attr:opt{req, string}, desc:"lock", "unlock"-->lock

a.
</command>
<duration min="1" max="10">

C. arc
<!--ro, opt, int, lock time, unit:s, dep:and,{$.LockByName.command,eq,lock}, attr:min{req, int},max{req, int}, desc:0: lock permanently-->1
</duration>
<recorderCode min="1" max="100">
<!--ro, opt, string, video recorder No., attr:min{req, int},max{req, int}-->test

s, em
</recorderCode>
<policeCode min="1" max="100">

A
<!--ro, opt, string, police No., attr:min{req, int},max{req, int}-->test

no fr
</policeCode>
</LockByName>
<LockByTime>

ri on
<!--ro, opt, object, lock/unlock video by time-->
<TrackId>

Ma oc
<!--ro, req, string, channel stream ID, desc:channel No. * 100 + stream type (-1: main stream, -2: sub-stream)-->101
</TrackId>
<recordType opt="ALL,MANUAL,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,COMMAND,SMART">
up
<!--ro, req, enum, recording type, subType:string, attr:opt{req, string}, desc:"ALL" (all videos), "MANUAL" (manual recording), "CMR" (capture by
schedule), "MOTION" (capture motion detection pictures), "ALARM" (capture alarm pictures), "EDR"(capture alarm pictures or motion detection pictures),
"ALARMANDMOTION" (capture alarm pictures and motion detection pictures), "Command" (command-based recording), "SMART" (smart recording)-->ALL
co gr

</recordType>
<startDateTime>
es a@

<!--ro, req, datetime, video segment start time-->1970-01-01T00:00:00+08:00


</startDateTime>
<endDateTime>
Fr rc

<!--ro, req, datetime, video segment end time-->1970-01-01T00:00:00+08:00


s

</endDateTime>
<command opt="lock,unlock">
y ema

<!--ro, req, enum, operation command, subType:string, attr:opt{req, string}, desc:“lock”, “unlock”-->lock
</command>
<duration min="1" max="10">
<!--ro, opt, int, lock time, unit:s, dep:and,{$.LockByName.command,eq,lock}, attr:min{req, int},max{req, int}, desc:0: lock permanently-->1
os fr

</duration>
</LockByTime>
</LockCap>
ad on

<isSupportForamtAll>
<!--ro, opt, bool, whether the device supports formatting all HDDs, desc:related URI: /ISAPI/ContentMgmt/Storage/hdd/format-->true
el .c

</isSupportForamtAll>
<isSupportExtendCabinetCfg>
<!--ro, opt, bool, whether it supports enclosure configuration, desc:related URI: /ISAPI/ContentMgmt/Storage/ExtendCabinet/capabilities-->true
ez

</isSupportExtendCabinetCfg>
<diskGroupNums>
<!--ro, opt, int, supported number of disk groups, desc:related URI: /ISAPI/ContentMgmt/Storage/diskGroup-->0
en

</diskGroupNums>
<ExternalDevice>
im

<!--ro, opt, object, external device storage-->


<USB>
ng

<!--ro, opt, object, USB information-->


Aj

<debugLogOutput>
<!--ro, opt, bool, whether to enable the debugging log, desc:related URI: /ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json-->true
Co

</debugLogOutput>
<isSupportCapturePackage>
<!--ro, opt, bool, whether the device supports configuring capture and filter function of a USB, desc:related URI:
/ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage/capabilities?format=json-->true
</isSupportCapturePackage>
<isSupportStreamStorage>
<!--ro, opt, bool, whether the device supports saving stream to a USB, desc:related URI:
/ISAPI/ContentMgmt/Storage/externalDevice/USB/streamStorage/capabilities?format=json-->true
</isSupportStreamStorage>
</USB>
</ExternalDevice>
<customProtocolNums>
<!--ro, opt, int, number of custom protocols connected via IPC, desc:related URI: /ISAPI/ContentMgmt/InputProxy/customProtocols-->0
</customProtocolNums>
<isSupportIPCTiming>
<!--ro, opt, bool, whether the device supports synchronizing the time of the network camera, desc:relate to enableTiming on URI:
/ISAPI/ContentMgmt/InputProxy/channels/<ID>-->true
</isSupportIPCTiming>
<isSupportLogConfig>
<!--ro, opt, bool, whether the device supports log configuration, desc:related URI: /ISAPI/ContentMgmt/logConfig/capabilities-->true
</isSupportLogConfig>
<SecurityLog>
<!--ro, opt, object, security log-->
<isSupportSecurityLog>
<!--ro, opt, bool, whether the device supports the security log-->true
</isSupportSecurityLog>
<isSupportLogServer>
<!--ro, opt, bool, whether it supports security log server configuration-->true
</isSupportLogServer>
<isSupportLogServerTest>
<!--ro, opt, bool, whether it supports security log server test-->true
</isSupportLogServerTest>
<SecurityLogTypeList>
<!--ro, req, array, list of security log types, subType:object-->
<SecurityLogType>
<!--ro, opt, object, list of log types-->
<primaryType>
<!--ro, req, enum, main log type, subType:string, desc:"Event", "Operation", "Other" (other types), "All" (all types)-->Event
</primaryType>

m
<secondaryType opt="test">

co
<!--ro, req, enum, sub type, subType:string, attr:opt{req, string}, desc:see other types on the appendix. "all" (all types)-->all
</secondaryType>
</SecurityLogType>

a.
</SecurityLogTypeList>
</SecurityLog>
<isSupportGetBackupDevice>

C. arc
<!--ro, opt, bool, whether the device supports getting the backup device, desc:related URI: /ISAPI/ContentMgmt/Storage/backup/device?format=json-->true
</isSupportGetBackupDevice>
<isSupportAutoBackup>
<!--ro, opt, bool, whether the device supports automatic backup, desc:related URI: /ISAPI/ContentMgmt/Storage/backup/auto/capabilities?format=json--

s, em
>true

A
</isSupportAutoBackup>

no fr
<certificateValidationEnabled>
<!--ro, opt, bool, whether to enable the certification validation, desc:related to certificateValidationEnabled on URI:
/ISAPI/ContentMgmt/InputProxy/channels/<ID>-->true

ri on
</certificateValidationEnabled>
<defaultAdminPortEnabled>
<!--ro, opt, bool, whether to enable the default communication port, desc:related to defaultAdminPortEnabled on the URI:

Ma oc
/ISAPI/ContentMgmt/InputProxy/channels/<ID>-->true
</defaultAdminPortEnabled>
up
<iSptInputProxyChanCap>
<!--ro, opt, bool, whether the device supports getting the capability set of the digital channels, desc:related URI:
/ISAPI/ContentMgmt/InputProxy/channels/capabilities-->true
co gr

</iSptInputProxyChanCap>
<isSupportLogDataPackage>
<!--ro, opt, bool, whether the device supports exporting the log files, desc:related URI: /ISAPI/ContentMgmt/logSearch/dataPackage-->true
es a@

</isSupportLogDataPackage>
<logSearchTimeSpanNums>
<!--ro, opt, int, number of time periods for log search, desc:relate to timeSpanList on URI: /ISAPI/ContentMgmt/logSearch中CMSearchDescription-->0
Fr rc

</logSearchTimeSpanNums>
<CloudStorageServerCap>
y ema

<!--ro, opt, object, capability of the cloud storage service-->


<isSupportCloudStorageParameter>
<!--ro, opt, bool, whether the device supports configuring the cloud storage parameters, desc:related URI:
/ISAPI/ContentMgmt/Storage/cloudServer/capabilities?format=json-->true
os fr

</isSupportCloudStorageParameter>
<isSupportCloudStoragePool>
<!--ro, opt, bool, whether the device supports configuring the cloud storage pool, desc:related URI:
ad on

/ISAPI/ContentMgmt/Storage/cloudServer/pool/capabilities?format=json-->true
</isSupportCloudStoragePool>
<supportChannelsNum>
el .c

<!--ro, opt, int, number of channels supported by the cloud storage-->0


</supportChannelsNum>
ez

<protocolType opt="videoStreamingOS">
<!--ro, opt, enum, subType:string, attr:opt{req, string}-->videoStreamingOS
</protocolType>
en

</CloudStorageServerCap>
<isSupportWebPrivatePlaybackByUTC>
<!--ro, opt, bool, whether it supports playback based on Web private protocol-->true
im

</isSupportWebPrivatePlaybackByUTC>
<isSupportFindCommonFileByUTC>
ng
Aj

<!--ro, opt, bool, whether it supports searching for ordinary files (private protocols) by UTC time-->true
</isSupportFindCommonFileByUTC>
Co

<isSupportFindEventFileByUTC>
<!--ro, opt, bool, whether it supports extending the time zone for searching files by event-->true
</isSupportFindEventFileByUTC>
<isSupportSmartSearchRecordByUTC>
<!--ro, opt, bool, whether it supports VCA search by UTC time-->true
</isSupportSmartSearchRecordByUTC>
<isSupportMRDSearchByTimeZone>
<!--ro, opt, bool, whether it supports searching for files (private protocols) by monthly calendar by UTC time-->true
</isSupportMRDSearchByTimeZone>
<isSupportSearchRecordLabelByUTC>
<!--ro, opt, bool, whether it supports searching for video tags by UTC time-->true
</isSupportSearchRecordLabelByUTC>
<isSupportSearchPictureByUTC>
<!--ro, opt, bool, whether it supports searching for pictures by UTC time-->true
</isSupportSearchPictureByUTC>
<isSupportSmartSearchPictureByUTC>
<!--ro, opt, bool, whether it supports smart pictures search by UTC time-->true
</isSupportSmartSearchPictureByUTC>
<isSupportFindLogByUTC>
<!--ro, opt, bool, whether it supports searching log by UTC time-->true
</isSupportFindLogByUTC>
<isSupportUploadRecordByUTC>
<!--ro, opt, bool, whether it supports uploading files to cloud storage by UTC time-->true
</isSupportUploadRecordByUTC>
</isSupportUploadRecordByUTC>
<isSupportPlaybackByUTC>
<!--ro, opt, bool, whether it supports playback and locating by UTC time-->true
</isSupportPlaybackByUTC>
<isSupportFaceDetecttionAlarmByTimeZone>
<!--ro, opt, bool, whether it supports reporting face detection by UTC time, desc:the time should be before isSupportCountingSearchByUTC and after
isSupportPlaybackByUTC-->true
</isSupportFaceDetecttionAlarmByTimeZone>
<isSupportSourceModify>
<!--ro, opt, bool, whether it supports configuring parameters of the LAN IPC, desc:related URI: /ISAPI/ContentMgmt/InputProxy/sourceModify/capabilities-
->true
</isSupportSourceModify>
<isSupportCountingSearchByUTC>
<!--ro, opt, bool, whether it supports searching people counting results by UTC time-->true
</isSupportCountingSearchByUTC>
<isSupportCluster>

m
<!--ro, opt, bool, whether it supports cluster function, desc:related URI: /ISAPI/ContentMgmt/Cluster-->true
</isSupportCluster>

co
<supportAIDTFSType opt="illegalParking,wrongdirection,crosslane,vehicleexist,lanechange,turnround,evidence">
<!--ro, opt, enum, supported AIDTFS types, subType:string, attr:opt{req, string}, desc:"illegalParking", "wrongdirection" (wrong-way driving),

a.
"crosslane"(driving on the lane line), "vehicleexist" (vehicle on non-motor vehicle lane), "lanechange" (illegal lane change detection), "turnround"
(illegal U-turning detection), "evidence" (face picture collection)-->illegalParking
</supportAIDTFSType>

C. arc
<isSupportMisinfoStateSearch>
<!--ro, opt, bool, whether it supports searching by false alarm status-->true
</isSupportMisinfoStateSearch>
<isSupportOneKeyOperationStorageData>

s, em
<!--ro, opt, bool, whether it supports one-touch configuration for storage data, desc:related URI: /ISAPI/ContentMgmt/Storage/oneKey/capabilities?
format=json-->true

A
</isSupportOneKeyOperationStorageData>

no fr
<eventRecordSearch>
<!--ro, opt, object, whether the device supports searching videos by event, desc:related URI: /ISAPI/ContentMgmt/eventRecordSearch?format=json-->
<eventType

ri on
opt="all,batch,alarmResult,faceSnap,vehicleMatchResult,hawkResult,VMD,alarmIn,inquestAlarm,behavior,posAlarm,accessControllerEvent,IOTD,trialAlarm,rapidMove
,defocus,scenechangedetection,PIR,fireSmartFireDetect,shipsDetection,TMA,TDA,framesPeopleCounting,personQueueTime,peopleDetection,safetyHelmetDetection,mixe

Ma oc
dTargetDetection,TMPA,smokeDetection,smokeAndFireDetection,abnormalReboot,audioexception,ANPR,objectsThrownDetection,audioAnalysis,HFPD,shelteralarm,cityMan
agement">
<!--ro, opt, enum, event type, subType:string, attr:opt{req, string}, desc:"all", "batch", "vehicleMatchResult" (vehicle comparison), "hawkResult"
up
(video analysis task), "faceContrast" (face picture comparison), "faceSnap" (face capture), "VMD", "alarmIn" (alarm input), "inquestAlarm", "behavior"
(abnormal event detection), "posAlarm", "accessControllerEvent", "IOTD", "trialAlarm", "rapidMove", "defocus", "scenechangedetection", "PIR",
"fireSmartFireDetect", "shipsDetection", "TMA", "TDA", "framesPeopleCounting", "personQueueTime", "peopleDetection", "safetyHelmetDetection",
co gr

"mixedTargetDetection", "TMPA", "smokeDetection", "smokeAndFireDetection", "abnormalReboot", "audioexception", "ANPR", "objectsThrownDetection" (object


thrown from heights detection), "audioAnalysis"-->alarmResult
es a@

</eventType>
<recordChannelListSize>
<!--ro, opt, int, maximum size of the value of recordChannelList-->16
Fr rc

</recordChannelListSize>
<triggerChannelsSize>
<!--ro, opt, int, maximum size of the value of triggerChannels-->16
y ema

</triggerChannelsSize>
<alarmResultAuxEventType opt="all,alarmResultFailure,alarmResultSuccess,whiteList">
<!--ro, opt, enum, sub-type of face picture comparison alarm, subType:string, dep:and,{$.RacmCap.eventRecordSearch.eventType,eq,alarmResult},
attr:opt{req, string}, desc:"alarmResultFailure" (face picture comparison failed), "alarmResultSuccess" (face picture comparison succeeded), "whiteList"
os fr

(allowlist alarm, i.e., strangers alarm)-->alarmResultFailure


</alarmResultAuxEventType>
ad on

<inquestParam>
<!--ro, opt, object, interrogation information, dep:and,{$.EventSearchDescription.eventType,eq,inquestAlarm}-->
<inquestEventType opt="any,inquestStart,inquestStop,inquestTag,inquestSegment">
el .c

<!--ro, opt, enum, interrogation information, subType:string, attr:opt{req, string}, desc:"any", "inquestStart" (interrogation start), "inquestStop"
(interrogation stop), "inquestTag" (marked information), "inquestSegment" (interrogation segment status)-->any
</inquestEventType>
ez

<roomIndex min="1" max="65535">


<!--ro, opt, int, interrogation room No., attr:min{req, int},max{req, int}, desc:it starts from 1-->1
</roomIndex>
en

</inquestParam>
<behavior>
im

<!--ro, opt, object, abnormal event detection, dep:and,{$.EventSearchDescription.eventType,eq,behavior}-->


<behaviorEventType
ng

opt="any,linedetection,regionEntrance,regionExiting,fielddetection,loitering,parking,violentMotion,group,unattendedBaggage,attendedBaggage,audioAbnormal">
Aj

<!--ro, req, enum, abnormal event detection event type, subType:string, attr:opt{req, string}, desc:"any", "linedetection" (line crossing
detection), "regionEntrance", "regionExiting", "fielddetection" (intrusion detection), "loitering" (loitering detectionparking), "parking" (parking
Co

detection), "violentMotion", "group" (people gathering), "unattendedBaggage", "attendedBaggage" (object removal), "audioAbnormal" (sudden change of sound
intensity detection)-->any
</behaviorEventType>
<falseAlarmType opt="all,falseAlarmFilterate" def="all">
<!--ro, opt, enum, subType:string, attr:opt{req, string},def{req, string}-->all
</falseAlarmType>
</behavior>
<posAlarm>
<!--ro, opt, object, pos event, dep:and,{$.EventSearchDescription.eventType,eq,posAlarm}, desc:it is recorded in the device, not in the internet-->
<caseSensitive opt="true,false">
<!--ro, req, bool, whether it is case-sensitive, attr:opt{req, string}-->false
</caseSensitive>
<combinateMode opt="and,or">
<!--ro, req, enum, keyword combination, subType:string, attr:opt{req, string}, desc:"and", "or"-->and
</combinateMode>
<keyword size="3">
<!--ro, opt, string, keyword, attr:size{req, int}-->test
</keyword>
</posAlarm>
<trialParam>
<!--ro, opt, object, trial event, dep:and,{$.EventSearchDescription.eventType,eq,trialAlarm}-->
<trialEventType opt="any,trialStart,trialStop,trialTag,trialSegment,trialJudge">
<!--ro, opt, enum, trial information, subType:string, attr:opt{req, string}, desc:"any", "trialStart" (trial start), ‘trialStop" (trial stop),
<!--ro, opt, enum, trial information, subType:string, attr:opt{req, string}, desc:"any", "trialStart" (trial start), ‘trialStop" (trial stop),
"trialTag" (marked information), "trialSegment" (trial segment status), "trialJudge" (trial case information)-->any
</trialEventType>
<caseNo min="0" max="56">
<!--ro, req, string, case No., range:[0,56], attr:min{req, int},max{req, int}-->test
</caseNo>
<caseName>
<!--ro, opt, string, case name, range:[0,100]-->test
</caseName>
<litigant1 min="0" max="32">
<!--ro, opt, string, litigant 1, range:[0,32], attr:min{req, int},max{req, int}-->test
</litigant1>
<litigant2 min="0" max="32">
<!--ro, opt, string, litigant 2, range:[0,32], attr:min{req, int},max{req, int}-->test
</litigant2>
<chiefJudge min="0" max="32">
<!--ro, opt, string, judge, range:[0,32], attr:min{req, int},max{req, int}-->test

m
</chiefJudge>

co
<caseType opt="0,1,2">
<!--ro, opt, enum, case type, subType:int, attr:opt{req, string}, desc:0 (all), 1 (criminal case), 2 (civil case)-->0
</caseType>

a.
</trialParam>
<accessControllerEvent>
<!--ro, opt, object, access control event, dep:and,{$.EventSearchDescription.eventType,eq,accessControllerEvent}-->

C. arc
<majorEventType>
<!--ro, opt, int, alarm main type, desc:see details in macro definition-->0
</majorEventType>
<subEventType>

s, em
<!--ro, opt, int, alarm sub type, desc:see details in macro definition-->0

A
</subEventType>

no fr
<cardNo min="0" max="32">
<!--ro, opt, string, card No., range:[0,32], attr:min{req, int},max{req, int}-->test
</cardNo>

ri on
<name min="0" max="32">
<!--ro, opt, string, name, range:[0,32], attr:min{req, int},max{req, int}-->test
</name>

Ma oc
<MACAddr min="0" max="12">
<!--ro, opt, string, MAC address, range:[0,12], attr:min{req, int},max{req, int}-->test
up
</MACAddr>
</accessControllerEvent>
<IOTD>
co gr

<!--ro, opt, object, non-video device event, dep:and,{$.EventSearchDescription.eventType,eq,IOTD}-->


<DeviceEventTypeList>
<!--ro, req, array, sub event type list, subType:object-->
es a@

<DeviceEventType>
<!--ro, opt, object, sub event type-->
Fr rc

<subEventType>
s

<!--ro, opt, string, sub event type, desc:see details in the node IoTEventType of Data Dictionary-->test
</subEventType>
y ema

</DeviceEventType>
</DeviceEventTypeList>
<IoTchannelID size="256">
<!--ro, opt, string, channel No., attr:size{req, int}, desc:search all channels if the node does not exists-->test
os fr

</IoTchannelID>
<caseSensitive opt="true,false">
<!--ro, req, bool, whether it is case-sensitive, attr:opt{req, string}-->false
ad on

</caseSensitive>
<combinateMode opt="and,or">
<!--ro, req, enum, keyword combination, subType:string, attr:opt{req, string}, desc:"and", "or"-->and
el .c

</combinateMode>
<keyword size="3">
ez

<!--ro, opt, string, keyword, attr:size{req, int}-->test


</keyword>
<zonNo min="0" max="32">
en

<!--ro, opt, int, zone No., attr:min{req, int},max{req, int}, desc:it is valid only when deviceType==2&&subEventType=="zone"-->1
</zonNo>
</IOTD>
im

<AudioAnalysis>
ng

<!--ro, opt, object, audio analysis event, dep:and,{$.EventSearchDescription.eventType,eq,audioAnalysis}-->


Aj

<targetType
opt="all,robbery,help,remittance,comment,fraud,cardNo,confirm,certificateID,certificateNumber,passWord,breakevenInterest,invest,noRisk,riskLow,riskSmall,tra
Co

nsfer,transferMoney,sureEarnNoLose,onlyEarnNoLose,financing,noLose,borrowMoney,hightReturn,highInterestRates,highYield">
<!--ro, req, enum, audio analysis type, subType:string, attr:opt{req, string}, desc:"all", "robbery", "help", "remittance", "comment", "fraud",
"cardNo" (card No.), "confirm", "certificateID", "certificateNumber", "passWord", "breakevenInterest" (break-even), "invest", "noRisk", "riskLow" (low
risk), "riskSmall" (small risk), "transfer", "transferMoney", "sureEarnNoLose" (earn without losing), "onlyEarnNoLose" (earn without losing), "financing",
"noLose" (not lose), "borrowMoney", "hightReturn", "highInterestRates" (high interest rate), "highYield"-->all
</targetType>
</AudioAnalysis>
<objectsThrownDetection>
<!--ro, opt, object, objects thrown from heights detection, dep:and,{$.EventSearchDescription.eventType,eq,objectsThrownDetection}-->
<alarmLevel opt="1,2,3">
<!--ro, req, enum, alarm level, subType:string, attr:opt{req, string}, desc:"1" (low), "2" (medium), "3" (high). It is categorized into three levels
according to the target track and the actual event credibility. The higher the level, the greater the credibility of the alarm being triggered by an actual
object thrown from building event. This node should be configured in the rule to filter alarm event uploading.-->1
</alarmLevel>
<floorID min="-100" max="100">
<!--ro, opt, int, floor range, attr:min{req, int},max{req, int}-->1
</floorID>
</objectsThrownDetection>
<HFPDSearch>
<!--ro, opt, object, dep:and,{$.EventSearchDescription.eventType,eq,HFPD}-->
<conditionType opt="greaterThan,equal,lessThan,notEqual,greaterThanOrEqual,lessThanOrEqual">
<!--ro, req, enum, subType:string, attr:opt{req, string}-->greaterThan
</conditionType>
<occurrences min="0" max="100" def="1">
<occurrences min="0" max="100" def="1">
<!--ro, opt, int, attr:min{req, int},max{req, int},def{req, int}-->1
</occurrences>
</HFPDSearch>
<cityManagement>
<!--ro, opt, object, dep:and,{$.RacmCap.eventRecordSearch.eventType,eq,cityManagement}-->
<subEventType opt="unregisteredStreetVendor,stallOutsideShop,stallOccupyingRoad">
<!--ro, opt, string, attr:opt{req, string}-->unregisteredStreetVendor
</subEventType>
</cityManagement>
</eventRecordSearch>
<isSupportManualRecord>
<!--ro, opt, bool, whether the device supports manual recording, desc:related URI: /ISAPI/ContentMgmt/record/control/manual/capabilities?format=json--
>true
</isSupportManualRecord>
<isSupportRemark>

m
<!--ro, opt, bool, whether the device supports file remarks-->true
</isSupportRemark>

co
<FileUpload>
<!--ro, opt, object, auto-upload file-->

a.
<enabled>
<!--ro, req, bool, whether the device supports uploading the file-->true
</enabled>

C. arc
</FileUpload>
<PoliceInfoUpload>
<!--ro, opt, object, auto-upload police information-->
<enabled>

s, em
<!--ro, req, bool, whether the device supports uploading the police information-->true
</enabled>

A
</PoliceInfoUpload>

no fr
<PoliceInfo>
<!--ro, opt, object, police officer information-->

ri on
<policeID>
<!--ro, opt, bool, whether the device supports police ID-->true
</policeID>

Ma oc
<policeCode>
<!--ro, opt, bool, whether the device supports police number-->true
</policeCode>
up
<policeName>
<!--ro, opt, bool, whether the device supports police name-->true
co gr

</policeName>
<password>
<!--ro, opt, bool, whether the device supports police password-->true
es a@

</password>
<deviceID>
<!--ro, opt, bool, whether the device supports device ID-->true
Fr rc

</deviceID>
<isSupportPoliceFacePicture>
<!--ro, opt, bool, whether the device supports managing the police face picture,
y ema

desc:related URL:
/ISAPI/ContentMgmt/police/<policeID>?format=json,
/ISAPI/ContentMgmt/police?format=json,
/ISAPI/ContentMgmt/police/deleteFacePicture?format=json-->true
os fr

</isSupportPoliceFacePicture>
</PoliceInfo>
ad on

<isSupportAssignChannelID>
<!--ro, opt, bool, whether the device supports specifying the access channel No. when adding the network camera, desc:related to channelID on URI:
/ISAPI/ContentMgmt/InputProxy/channels/<ID>-->true
el .c

</isSupportAssignChannelID>
<isSupportAssignStreamID>
<!--ro, opt, bool, whether the device supports specifying stream ID of the channel when adding the network camera, desc:related to streamID on URI:
ez

/ISAPI/ContentMgmt/InputProxy/channels/<ID>-->true
</isSupportAssignStreamID>
en

<PictureSearchSubTypeList>
<!--ro, opt, object, list of picture searching sub type-->
<PictureSearchSubType>
im

<!--ro, opt, object, the sub type of picture search-->


<mainType>
ng

<!--ro, req, enum, main event type of the searched picture, subType:string, desc:"vehicleDetection", "HVTVehicleDetection" (mixed-traffic
Aj

detection)-->vehicleDetection
</mainType>
Co

<subType opt="all,motorVehicle,nonMotorVehicle,pedestrian">
<!--ro, req, enum, sub type of each main event type, subType:string, attr:opt{req, string}, desc:"all", "motorVehicle", "nonMotorVehicle",
"pedestrian"-->all
</subType>
</PictureSearchSubType>
</PictureSearchSubTypeList>
<isSupportPlaybackStreamIDByUTC>
<!--ro, opt, bool, whether it supports playback by stream ID according to UTC time-->true
</isSupportPlaybackStreamIDByUTC>
<isSupportTimeLockStreamIDByUTC>
<!--ro, opt, bool, whether it supports locking and unlocking the video segment by steam ID according to UTC time-->true
</isSupportTimeLockStreamIDByUTC>
<isSupportTimeSearch>
<!--ro, opt, bool, whether it supports searching for recording start and end time by channel, desc:/ISAPI/ContentMgmt/time/search?format=json-->true
</isSupportTimeSearch>
<behaviorEventPicSearch opt="allBehaviorEvent,running,group,violentMotion,failDown,playCellphone,peopleNumChange,leavePosition,retention,sleepOnduty">
<!--ro, opt, string, whose pictures are supported to be searched, attr:opt{req, string}, desc:it is displayed on the Web Client currently-->test
</behaviorEventPicSearch>
<perimeterEventPicSearch opt="allPerimeterEvent,linedetection,fielddetection,regionEntrance,regionExiting,loitering">
<!--ro, opt, string, perimeter protection events whose pictures are supported to be searched, attr:opt{req, string}, desc:it is displayed on the Web
Client currently-->test
</perimeterEventPicSearch>
<isSupportSourceStatus>
<isSupportSourceStatus>
<!--ro, opt, bool, whether it supports getting source status-->true
</isSupportSourceStatus>
<isSupportSSDSMARTTest>
<!--ro, opt, bool, whether the device supports S.M.A.R.T. detection on SSD, desc:related URI: /ISAPI/ContentMgmt/Storage/ssd/<ID>/SMARTTest/start-->true
</isSupportSSDSMARTTest>
<MobileStorage>
<!--ro, opt, object, storage capability of the mobile HDD-->
<isSupportGetFileTime>
<!--ro, opt, bool, whether it supports getting the file time of the mobile HDD, desc:it supports mobile HDD currently.
/ISAPI/ContentMgmt/mobileStorage/fileTime/capabilities?format=json-->true
</isSupportGetFileTime>
</MobileStorage>
<isSupportGetChannelList>
<!--ro, opt, bool, whether it supports getting channels of the HDD, desc:it supports HDD currently.
/ISAPI/ContentMgmt/Storage/hdd/channelList/capabilities?format=json-->true
</isSupportGetChannelList>

m
<isSupportCascade>

co
<!--ro, opt, bool, whether it supports configuring parameters for NVR cascading topology-->true
</isSupportCascade>
<isSupportFileManagement>

a.
<!--ro, opt, bool, whether it supports configuring file management. /ISAPI/ContentMgmt/fileManagement/capabilities?format=json, desc:related URI:
/ISAPI/ContentMgmt/fileManagement/capabilities?format=json-->true

C. arc
</isSupportFileManagement>
<isSupportPictureInfo>
<!--ro, opt, bool, whether it supports picture search on the SD card of the capture camera-->true
</isSupportPictureInfo>

s, em
<isSupportChanStatusPage>
<!--ro, opt, string, whether it supports searching the digital channel by page, desc:related URI:

A
/ISAPI/ContentMgmt/InputProxy/channels/statusPage/capabilities-->test

no fr
</isSupportChanStatusPage>
<isSupportRecordSearchByTargetType>
<!--ro, opt, bool, whether it supports searching the event record by target (pedestrian/vehicles)-->true

ri on
</isSupportRecordSearchByTargetType>
<storIpcStartNo>
<!--ro, opt, int, the first IP channel No. of the record, desc:it is supported by Hikmed Imaging Technology-->0

Ma oc
</storIpcStartNo>
<maxRecordIpcNum>
up
<!--ro, opt, int, number of the IP channels which support recording, desc:it is supported by Hikmed Imaging Technology-->0
</maxRecordIpcNum>
<maxConferenceIpcNum>
co gr

<!--ro, opt, int, number of the meeting IP channels, desc:it is supported by Hikmed Imaging Technology-->0
</maxConferenceIpcNum>
<decIpcStartNo>
es a@

<!--ro, opt, int, start No. of screen mirroring IP channels, desc:it is supported by Hikmed Imaging Technology-->0
</decIpcStartNo>
Fr rc

<maxDecodeIpcNum>
s

<!--ro, opt, int, number of screen mirroring IP channels, desc:it is supported by Hikmed Imaging Technology-->0
</maxDecodeIpcNum>
y ema

<pipIpcStartNo>
<!--ro, opt, int, start No. of the integrated IP channels, desc:it is supported by Hikmed Imaging Technology-->0
</pipIpcStartNo>
<maxPipIpcNum>
os fr

<!--ro, opt, int, number of the integrated IP channels, desc:it is supported by Hikmed Imaging Technology-->0
</maxPipIpcNum>
<isSupportLogSearch>
ad on

<!--ro, opt, bool, whether it supports log search-->true


</isSupportLogSearch>
el .c

<isSupportRecordSearch>
<!--ro, opt, bool, whether it supports video search-->true
</isSupportRecordSearch>
ez

<isSupportRecordDownload>
<!--ro, opt, bool, whether it supports video downloading-->true
</isSupportRecordDownload>
en

<isSupportPnp opt="true,false">
<!--ro, opt, bool, whether it supports configuring plug-and-play for the network camera, attr:opt{req, string}-->true
im

</isSupportPnp>
<esataUseage>
ng

<!--ro, opt, enum, storage strategy, subType:string, desc:"backup", "record"-->backup


Aj

</esataUseage>
<subType opt="all,leave,on,sleep">
Co

<!--ro, opt, enum, absence sub type, subType:string, attr:opt{req, string}, desc:"all", "leave" (absence), "on" (on duty), "sleep" (sleeping on duty)--
>all
</subType>
<isSupportManualBackup>
<!--ro, opt, bool, whether it supports manual backup, desc:related URI: /ISAPI/ContentMgmt/Storage/backup/manual/capabilities?format=json-->true
</isSupportManualBackup>
<isSupportLinkToIPCWeb>
<!--ro, opt, bool, whether it supports going to the Web Client of the network camera (on the digital channel management), desc:it is supported only when
it is used on the device and Web Client in pair-->true
</isSupportLinkToIPCWeb>
<isSupportIPCConfigCSV>
<!--ro, opt, bool, whether the device supports importing the configuration file of the network camera, desc:related URI:
/ISAPI/ContentMgmt/InputProxy/ipcConfigCSV?format=json-->true
</isSupportIPCConfigCSV>
<isSupportExperimentExam>
<!--ro, opt, bool, whether it supports the related function of the experiment exam, desc:related URI: /ISAPI/ContentMgmt/experimentExam/capabilities?
format=json-->true
</isSupportExperimentExam>
<isSupportPOSRecordSearch>
<!--ro, opt, bool, whether it supports POS video research, desc:related URI: /ISAPI/ContentMgmt/POSRecord/search/capabilities-->true
</isSupportPOSRecordSearch>
<isSupportSpare>
<!--ro, opt, bool, whether the device supports hot spare configuration, desc:related capability set: /ISAPI/ContentMgmt/spare/capabilities?format=json--
>true
>true
</isSupportSpare>
<isSupportTracksDates>
<!--ro, opt, bool, whether it supports configuring video schedule by calendar, desc:related URI: /ISAPI/ContentMgmt/record/tracks/dates/capabilities?
format=json-->true
</isSupportTracksDates>
<isSupportRecordAudio>
<!--ro, opt, bool, whether the device supports recording the audio, desc:only the video will be recorded and the video will not be recorded related URI:
/ISAPI/ContentMgmt/recordAudio/<audioID>/capabilities?format=json-->true
</isSupportRecordAudio>
<isSupportSearchAudio>
<!--ro, opt, bool, whether the device supports searching the audio, desc:related URI: /ISAPI/ContentMgmt/recordAudio/search/capabilities?format=json--
>true
</isSupportSearchAudio>
<isSupportAudioDailyDistribution>
<!--ro, opt, bool, whether it supports searching for audio file information by monthly calendar, desc:related URI:

m
/ISAPI/ContentMgmt/recordAudio/<audioID>/searchDailyDistribution?format=json-->true

co
</isSupportAudioDailyDistribution>
<isSupportDownloadAudio>
<!--ro, opt, bool, whether it supports downloading audio files by file name, desc:related URI:

a.
/ISAPI/ContentMgmt/recordAudio/fileNameDownload/capabilities?format=json-->true
</isSupportDownloadAudio>
<isSupportDeleteAudio>

C. arc
<!--ro, opt, bool, whether the device supports deleting the recorded audio file, desc:Related URI: /ISAPI/ContentMgmt/recordAudio/deleteFile?
format=json-->true
</isSupportDeleteAudio>
<isSupportEventRecordCfg>

s, em
<!--ro, opt, bool, whether it supports configuring event video parameters, desc:related URI: /ISAPI/ContentMgmt/eventRecordCfg?format=json-->true
</isSupportEventRecordCfg>

A
<isSupportSearchRemoteAlbum>

no fr
<!--ro, opt, bool, whether the device supports searching the remote album information, desc:related URI: /ISAPI/ContentMgmt/searchRemoteAlbum?
format=json-->true

ri on
</isSupportSearchRemoteAlbum>
<isNotSupportTracks>
<!--ro, opt, bool, whether it does not support recording schedule, desc:true will be returned if it is not supported NVR/CVRs support recording

Ma oc
schedule. This device does not support configuring recording schedule so the capability is added unsupported URI:
/ISAPI/ContentMgmt/record/tracks/<trackStreamID>/capabilities and /ISAPI/ContentMgmt/record/tracks and /ISAPI/ContentMgmt/record/tracks/<trackStreamID>--
>true
up
</isNotSupportTracks>
<isSupportTFCardConfig>
co gr

<!--ro, opt, bool, whether the device supports function switch of the extended TF card: /ISAPI/ContentMgmt/TFCardConfig/capabilities?format=json-->true
</isSupportTFCardConfig>
<isSupportDockStationFileStorageDuration>
es a@

<!--ro, opt, bool, whether the device supports configuring the retention period of files, desc:related URI:
/ISAPI/ContentMgmt/dockStationFile/DockStationFileStorageDuration?format=json-->true
</isSupportDockStationFileStorageDuration>
Fr rc

<isSupportDockStationFileAcquisitionMode>
<!--ro, opt, bool, whether the device supports configuring the file collection mode, desc:related URI:
y ema

/ISAPI/ContentMgmt/dockStationFile/DockStationFileAcquisitionMode?format=json-->true
</isSupportDockStationFileAcquisitionMode>
<isSupportSSDAbnormalCfg>
<!--ro, opt, bool, whether the device supports SSD exception detection parameters, desc:/ISAPI/ContentMgmt/Storage/ssd/SSDAbnormalCfg/capabilities?
os fr

format=json-->true
</isSupportSSDAbnormalCfg>
<isSupportAudioQuota>
ad on

<!--ro, opt, bool, whether the device supports audio recording quota, desc:GET/PUT /ISAPI/ContentMgmt/channels/<audioID>/AudioQuota?format=json-->true
</isSupportAudioQuota>
<targetRegionEventPicSearch opt="linedetection,fielddetection,regionEntrance,regionExiting,VMD">
el .c

<!--ro, opt, string, event type supported to return target region in the picture when searching for pictures, attr:opt{req, string}-->test
</targetRegionEventPicSearch>
<isSupportAudioChanCap>
ez

<!--ro, opt, bool, whether the device supports managing audio channel resources, desc:related URL: /ISAPI/ContentMgmt/audioChannel/capabilities?
format=json-->true
en

</isSupportAudioChanCap>
<isSupportImportEnforcementWorkFile>
<!--ro, opt, bool, whether the device supports importing the law enforcement working file, desc:POST /ISAPI/ContentMgmt/ImportEnforcementWorkFile?
im

format=json-->true
</isSupportImportEnforcementWorkFile>
ng

<isSupportEnforcementProjectInfo>
Aj

<!--ro, opt, bool, whether the device supports getting the project information of the body camera for law enforcement, desc:GET/PUT
Co

/ISAPI/ContentMgmt/EnforcementProjectInfo?format=json-->true
</isSupportEnforcementProjectInfo>
<isSupportTriggerVoiceMonitoringHistoryEventRetrans>
<!--ro, opt, bool, whether the device supports reloading audio files of the history event of triggering human voice monitoring, desc:POST
/ISAPI/ContentMgmt/channels/<audioID>/TriggerVoiceMonitoringHistoryEventRetrans?format=json-->true
</isSupportTriggerVoiceMonitoringHistoryEventRetrans>
<isSupportDockStationAudioFileToText>
<!--ro, opt, bool, whether the device supports converting dock station's audio to text, desc:POST /ISAPI/ContentMgmt/DockStationAudioFileToText?
format=json-->true
</isSupportDockStationAudioFileToText>
<isSupportDockStationAudioFileAnalysisKeyWord>
<!--ro, opt, bool, whether the device supports keyword analysis of dock station's audio file, desc:GET/PUT
/ISAPI/ContentMgmt/DockStationAudioFileAnalysisKeyWord?format=json-->true
</isSupportDockStationAudioFileAnalysisKeyWord>
<isSupportStartingUpRecordParams>
<!--ro, opt, bool-->true
</isSupportStartingUpRecordParams>
<isSupportSendLawEnforcementFileUploadInfo>
<!--ro, opt, bool-->true
</isSupportSendLawEnforcementFileUploadInfo>
<isSupportRecordAgeParams>
<!--ro, opt, bool-->true
</isSupportRecordAgeParams>
<isSupportModifyRecordAgeParams>
<isSupportModifyRecordAgeParams>
<!--ro, opt, bool-->true
</isSupportModifyRecordAgeParams>
<isSupportSearchRecordAgeParams>
<!--ro, opt, bool-->true
</isSupportSearchRecordAgeParams>
<isSupportQuotaParams>
<!--ro, opt, bool-->true
</isSupportQuotaParams>
<isSupportSearchAudioRecordPlan>
<!--ro, opt, bool-->true
</isSupportSearchAudioRecordPlan>
<isSupportAddQuotaParams>
<!--ro, opt, bool-->true
</isSupportAddQuotaParams>
<isSupportModifyQuotaParams>
<!--ro, opt, bool-->true

m
</isSupportModifyQuotaParams>

co
<isSupportGetQuotaParams>
<!--ro, opt, bool-->true
</isSupportGetQuotaParams>

a.
<isSupportDeleteQuotaParams>
<!--ro, opt, bool-->true

C. arc
</isSupportDeleteQuotaParams>
<isSupportAddRecordAgeParams>
<!--ro, opt, bool-->true
</isSupportAddRecordAgeParams>

s, em
<isSupportDeleteRecordAgeParams>
<!--ro, opt, bool-->true

A
</isSupportDeleteRecordAgeParams>

no fr
<isSupportAutoRecordSynthesisParams>
<!--ro, opt, bool-->true
</isSupportAutoRecordSynthesisParams>

ri on
<isSupportGetSSDSystemConfigRecoverProgress>
<!--ro, opt, bool-->true

Ma oc
</isSupportGetSSDSystemConfigRecoverProgress>
<isSupportSSDSystemConfigRecover>
<!--ro, opt, bool-->true
up
</isSupportSSDSystemConfigRecover>
<isSupportSSDSystemConfigState>
<!--ro, opt, bool-->true
co gr

</isSupportSSDSystemConfigState>
</RacmCap>
es a@
Fr rc

16.1.9.2 Get the system security capability


y ema

Request URL
GET /ISAPI/Security/capabilities?username=<userName>
os fr

Query Parameter
ad on

Parameter Name Parameter Type Description


el .c

userName string user name


ez

Request Message
None
en

Response Message
im
ng
Aj

<?xml version="1.0" encoding="UTF-8"?>


Co

<SecurityCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, system security capability, attr:version{req, string, protocolVersion}-->
<supportUserNums>
<!--ro, opt, int, supported maximum number of users-->0
</supportUserNums>
<userBondIpNums>
<!--ro, opt, int, supported maximum number of IP addresses that can be bound-->0
</userBondIpNums>
<userBondMacNums>
<!--ro, opt, int, supported maximum number of MAC addresses that can be bound-->0
</userBondMacNums>
<isSupCertificate>
<!--ro, opt, bool, whether the device supports authentication-->true
</isSupCertificate>
<issupIllegalLoginLock>
<!--ro, opt, bool, whether the device supports locking login-->true
</issupIllegalLoginLock>
<isSupportOnlineUser>
<!--ro, opt, bool, whether the device supports the online user configuration-->true
</isSupportOnlineUser>
<isSupportAnonymous>
<!--ro, opt, bool, whether the device supports anonymous login-->true
</isSupportAnonymous>
<isSupportStreamEncryption>
<isSupportStreamEncryption>
<!--ro, opt, bool, whether the device supports stream encryption-->true
</isSupportStreamEncryption>
<securityVersion opt="1,2">
<!--ro, opt, int, encryption capability set, attr:opt{req, string}, desc:the encryption capability of each version consists of two parts: encryption
algorithm and the range of encrypted nodes currently 1 refers to AES128 encryption and 2 refers to AES256 encryption, the range of encrypted nodes is
described in each protocol-->1
</securityVersion>
<keyIterateNum>
<!--ro, opt, int, secret key iteration times, dep:or,{$.SecurityCap.securityVersion,eq,1},{$.SecurityCap.securityVersion,eq,2}, desc:this node depends
on the node securityVersion, the range is between 100 and 1000-->100
</keyIterateNum>
<isSupportUserCheck>
<!--ro, opt, bool, whether the device supports verifying the login password when editing (editing/adding/deleting) user parameters, dep:or,
{$.SecurityCap.securityVersion,eq,0},{$.SecurityCap.securityVersion,eq,1}, desc:it is an added capability, which indicates that whether supporting the login
password verification for editing/adding/deleting user parameters, this node depends on the node securityVersion, which means that it is only valid for the

m
versions that support encrypting the sensitive information-->true
</isSupportUserCheck>

co
<isSupportGUIDFileDataExport>
<!--ro, opt, bool, whether the device supports exporting the device's GUID file, desc:related URI: /ISAPI/Security/GUIDFileData-->true

a.
</isSupportGUIDFileDataExport>
<isSupportSecurityQuestionConfig>
<!--ro, opt, bool, whether the device supports answering security questions, desc:related URI: /ISAPI/Security/questionConfiguration-->true

C. arc
</isSupportSecurityQuestionConfig>
<supportSecurityNode opt="wirelessServer,wirelessDial">
<!--ro, opt, string, additional node for supporting sensitive information encryption, attr:opt{req, string},
desc:in the earlier version of the solution for encrypting the sensitive information via ISAPI (i.e., the solution for transmitting plaintext via ISAPI),

s, em
some URIs containing sensitive information are left out now these URIs need to be encrypted for transmission, this capability node is added to be compatible
with old devices

A
if wirelessServer in this node is returned, it indicates that the following sensitive information should be encrypted

no fr
/ISAPI/System/Network/interfaces/<ID>/wirelessServer/capabilities, /ISAPI/System/Network/interfaces/<ID>/wirelessServer, if wirelessDial in this
node is returned, it indicates that the following sensitive information should be encrypted

ri on
/ISAPI/System/Network/WirelessDial/Interfaces,
/ISAPI/System/Network/WirelessDial/Interfaces/<ID>-->wirelessServer
</supportSecurityNode>

Ma oc
<isSupportGetOnlineUserListSC>
<!--ro, opt, bool, whether the device supports searching the online user list, desc:related URI: /ISAPI/Security/onlineUser-->true
</isSupportGetOnlineUserListSC>
up
<SecurityLimits>
<!--ro, opt, object, capability of configuring security limit parameters-->
<LoginPasswordLenLimit min="1" max="16">
co gr

<!--ro, opt, string, length limit of the user's login password, attr:min{req, int},max{req, int}-->1
</LoginPasswordLenLimit>
es a@

<SecurityAnswerLenLimit min="1" max="128">


<!--ro, opt, string, length limit of the security question's answer, attr:min{req, int},max{req, int}-->1
</SecurityAnswerLenLimit>
Fr rc

</SecurityLimits>
<RSAKeyLength opt="512,1024,2048" def="2048">
<!--ro, opt, enum, HTTPS certificate length, subType:int, attr:opt{req, string},def{req, string}, desc:512, 1024, 2048-->2048
y ema

</RSAKeyLength>
<isSupportONVIFUserManagement>
<!--ro, opt, bool, whether the device supports user management of Open Network Video Interface Protocol-->true
</isSupportONVIFUserManagement>
os fr

<WebCertificateCap>
<!--ro, opt, object, HTTP authentication capability, desc:if this node is not returned, it indicates that device supports basic and digest
ad on

authentication-->
<CertificateType opt="basic,digest,digest/basic">
<!--ro, req, enum, certificate type, subType:string, attr:opt{req, string}, desc:“basic” (basic authentication), “digest” (digest authentication),
el .c

“digest/basic” (digest/basic authentication)-->basic


</CertificateType>
<SecurityAlgorithm>
ez

<!--ro, opt, object, security algorithm, dep:or,{$.SecurityCap.WebCertificateCap.CertificateType,eq,digest},


{$.SecurityCap.WebCertificateCap.CertificateType,eq,digest/basic}-->
en

<algorithmType opt="MD5,SHA256,MD5/SHA256">
<!--ro, opt, enum, algorithm type, subType:string, attr:opt{req, string}, desc:“MD5”, “SHA256”, “MD5/SHA256”-->MD5
</algorithmType>
im

</SecurityAlgorithm>
</WebCertificateCap>
ng

<isSupportConfigFileImport>
Aj

<!--ro, opt, bool, whether the device supports importing the configuration file, desc:true (support), this node is not returned (not support)-->true
</isSupportConfigFileImport>
Co

<isSupportConfigFileExport>
<!--ro, opt, bool, whether the device supports exporting the configuration file, desc:true (support), this node is not returned (not support)-->true
</isSupportConfigFileExport>
<cfgFileSecretKeyLenLimit min="0" max="16">
<!--ro, opt, int, length limit of the configuration file's verification key, attr:min{req, int},max{req, int}-->1
</cfgFileSecretKeyLenLimit>
<supportIPCActivatePassword>
<!--ro, opt, bool, whether the device supports configuring the password for activating the network camera-->true
</supportIPCActivatePassword>
<isIrreversible>
<!--ro, opt, bool, whether the device supports irreversible password storage, desc:If this function is not supported, the plaintext password of the user
information will be stored in the device; otherwise, the password will be hashed for storage in the device.-->true
</isIrreversible>
<salt>
<!--ro, opt, string, the specific salt used by the user to log in-->test
</salt>
<isSupportOnvifInfo>
<!--ro, opt, bool, whether the device supports getting the Open Network Video Interface Protocol, desc:true (support), this node is not returned (not
support)-->true
</isSupportOnvifInfo>
<isSupportPictureURlCertificate opt="true,false">
<!--ro, opt, bool, whether the device supports configuring parameters for picture URL authentication, attr:opt{req, string}, desc:if this node is not
returned, it indicates the digest authentication for picture URL by default-->true
returned, it indicates the digest authentication for picture URL by default-->true
</isSupportPictureURlCertificate>
<isSupportGB35114Certificate>
<!--ro, opt, bool, whether supports GB35114 protocol and CA/SIP authentication certificate-->true
</isSupportGB35114Certificate>
<isSupportAuthenticationMode opt="uKey,private">
<!--ro, opt, enum, verification mode, subType:string, attr:opt{req, string}, desc:“uKey”, “private”-->private
</isSupportAuthenticationMode>
<isSupportUnloggedUserPermissionConfig opt="true,false">
<!--ro, opt, bool, whether the device supports configuring permission for users that have not logged in, attr:opt{req, string}-->true
</isSupportUnloggedUserPermissionConfig>
<isSupportUserNamePasswordCheckUpgrade>
<!--ro, opt, bool, whether the device supports upgrading the verification of the user name and password, desc:if this node is not returned, it indicates
that device does not support this function-->true
</isSupportUserNamePasswordCheckUpgrade>
<isSupportDeviceCertificatesManagement>
<!--ro, opt, bool, whether the device supports device certificate management, desc:if this node is not returned, it indicates that device does not

m
support this function-->true

co
</isSupportDeviceCertificatesManagement>
<isSupportSIPCertificatesManagement>
<!--ro, opt, bool, whether the device supports SIP certificate management, desc:this node is returned if the device supports this function and not

a.
returned if device does not support this function, related URI: /ISAPI/Security/SIPCertificate, additional node: <SIPCertificatesManagementCap>-->true
</isSupportSIPCertificatesManagement>

C. arc
<isSupportDeviceSelfSignCertExport>
<!--ro, opt, bool, whether the device supports exporting self-signed certificate-->true
</isSupportDeviceSelfSignCertExport>
<isSupportSecurityEmail>
<!--ro, opt, bool, whether the device supports configuring the security email, desc:if this node is not returned, it indicates that device does not

s, em
support this function-->true

A
</isSupportSecurityEmail>

no fr
<isSupportRTSPCertificate opt="true,false">
<!--ro, opt, bool, whether the device supports RTSP certificate management, attr:opt{req, string}-->true
</isSupportRTSPCertificate>

ri on
<maxIllegalLoginTimes min="3" max="20" def="5">
<!--ro, opt, int, maximum failed illegal login attempts, range:[3,20], attr:min{req, int},max{req, int},def{req, int}, desc:this node is valid when the
value of the node issupportIllegalLoginLock is true and will be returned when the maximum failed attempts of illegally logging in to the device reach the

Ma oc
limit-->3
</maxIllegalLoginTimes>
up
<SecurityAdvanced>
<!--ro, opt, object, security advanced parameters-->
<securityEnhanced>
co gr

<!--ro, opt, bool, whether the device supports security reinforcement-->true


</securityEnhanced>
<noOperationEnabled>
es a@

<!--ro, req, bool, whether to enable the control timeout when there is no operation-->true
</noOperationEnabled>
Fr rc

<noOperationTime min="1" max="60" def="15">


s

<!--ro, req, int, control timeout when there is no operation, range:[1,60], unit:min, attr:min{req, int},max{req, int},def{req, int}-->15
</noOperationTime>
y ema

<isSupportDigestStatus>
<!--ro, opt, bool, digest status-->true
</isSupportDigestStatus>
<passwordLimitLevel opt="middling,high">
os fr

<!--ro, opt, enum, password strength limit level, subType:string, attr:opt{req, string},
desc:the configured password is required by the following limit
“middling” (middle level), “high” (high level), middle level password contains 8 to 16 characters, including at least 2 types of the following characters:
ad on

digits, lower case letters, upper case letters, and special characters; high level password contains 8 to 16 characters, including at least 3 types of the
following characters: digits, lower case letters, upper case letters, and special characters-->middling
el .c

</passwordLimitLevel>
</SecurityAdvanced>
<LoginLinkNum>
ez

<!--ro, opt, object, number of controls logging in at the same time-->


<maxLinkNum min="1" max="128" def="50">
<!--ro, req, int, maximum number of controls logging in at the same time, range:[1,128], attr:min{req, int},max{req, int},def{req, int}-->50
en

</maxLinkNum>
</LoginLinkNum>
<isSupportCCClientCertificate>
im

<!--ro, opt, bool, whether the device supports the CC (Client Certificate) function-->true
ng

</isSupportCCClientCertificate>
Aj

<passwordValidity min="0" max="365">


<!--ro, opt, string, range of the password validity period, range:[0,365], attr:min{req, int},max{req, int}, desc:if this node is returned, it indicates
Co

that the device supports configuring the password validity period, and only the administrator can edit the configuration-->1
</passwordValidity>
<isSupportResetChannelPassword>
<!--ro, opt, bool, whether the device supports resetting the password of the channel-->true
</isSupportResetChannelPassword>
<DoubleVerificationCap>
<!--ro, opt, object, secondary authentication capability-->
<isSupportUsersConfig>
<!--ro, opt, bool, whether the device supports configuring users for secondary authentication-->true
</isSupportUsersConfig>
<isSupportUsersPermissionConfig>
<!--ro, opt, bool, whether the device supports configuring user permission for secondary authentication-->true
</isSupportUsersPermissionConfig>
</DoubleVerificationCap>
<isSupportUserSearch>
<!--ro, opt, bool, whether the device supports searching users-->true
</isSupportUserSearch>
<keypadPassword min="1" max="10">
<!--ro, opt, int, keypad password length, attr:min{req, int},max{req, int}, desc:When the password length of different user types is different, this
node only indicates the keypad password length of the administrator; otherwise, the keypad password length of all user types is the same and defined by the
value of this node-->1
</keypadPassword>
<installerKeypadPassword min="1" max="10">
<!--ro, opt, int, keypad password length of the installer, attr:min{req, int},max{req, int}-->1
<!--ro, opt, int, keypad password length of the installer, attr:min{req, int},max{req, int}-->1
</installerKeypadPassword>
<operatorKeypadPassword min="1" max="10">
<!--ro, opt, int, keypad password length of the operator, attr:min{req, int},max{req, int}-->1
</operatorKeypadPassword>
<userOperateType opt="1,2,3">
<!--ro, opt, enum, user type, subType:int, attr:opt{req, string}, desc:1 (network user), 2 (keypad user), 3 (network user and keypad user)-->1
</userOperateType>
<isSptUserEnabled>
<!--ro, opt, bool, whether the device supports configuring parameters for enabling the user-->true
</isSptUserEnabled>
<isSptAdminCap>
<!--ro, opt, bool, whether the device supports getting the admin permission capability-->true
</isSptAdminCap>
<isSupportBackLogCfg>
<!--ro, opt, bool, whether the device supports configuring basic parameters of the background log-->true

m
</isSupportBackLogCfg>
<isSupportBackLogExport>

co
<!--ro, opt, bool, whether the device supports exporting the background log-->true
</isSupportBackLogExport>

a.
<isSupportModifyInnerPassword opt="true,false">
<!--ro, opt, bool, whether the device supports editing its built-in passwords,, attr:opt{req, string}, desc:such as the database password, system
account password-->true

C. arc
</isSupportModifyInnerPassword>
<isSupportEncryptCertificate>
<!--ro, opt, bool, whether the device supports certificate encryption, desc:/ISAPI/Security/deviceCertificate-->true
</isSupportEncryptCertificate>

s, em
<maxIllegalLoginLockTime min="1" max="120" def="30.00">
<!--ro, opt, int, lock time range, range:[1,120], unit:min, attr:min{req, int},max{req, int},def{req, int}-->1

A
</maxIllegalLoginLockTime>

no fr
<cloudSensitiveInfoEncryptType>
<!--ro, opt, string, encryption type of the cloud sensitive information, desc:the current device returns the value "2.1", which indicates that the

ri on
method of generating the key for encrypting the sensitive information is SHA256 (calc_sha256 (user, salt, SHA256 (user+salt2+SHA256 (user+salt+password))) +
AaBbCcDd1234!@#$)-->2.1
</cloudSensitiveInfoEncryptType>

Ma oc
<isSupportCertificateCustomID>
<!--ro, opt, bool, whether the device supports using the user's custom ID to configure the certificate-->true
</isSupportCertificateCustomID>
up
<isSupportResetLANPassword>
<!--ro, opt, bool, whether the device supports resetting the device's password in the LAN, desc:related URI:
co gr

/ISAPI/Security/resetPassword/certification?format=json-->true
</isSupportResetLANPassword>
<isSupportPicHttpsCertificatesManagement>
es a@

<!--ro, opt, bool, whether the device supports managing the HTTPS certificate for pictures, desc:true (support), this node is not returned (not
support)-->true
</isSupportPicHttpsCertificatesManagement>
Fr rc

<isSupportAKSKImport>
<!--ro, opt, bool, whether the device supports importing AKSK, desc:true (support), this node is not returned (not support)-->true
y ema

</isSupportAKSKImport>
<isSupportAKSKExport>
<!--ro, opt, bool, whether the device supports exporting AKSK, desc:true (support), this node is not returned (not support)-->true
</isSupportAKSKExport>
<isSupportAKSKReset>
os fr

<!--ro, opt, bool, whether the device supports resetting AKSK, desc:true (support), this node is not returned (not support)-->true
</isSupportAKSKReset>
ad on

<ExportCertificateFile>
<!--ro, opt, object, whether the device supports exporting the certificate, desc:related URI: POST
/ISAPI/Security/serverCertificate/exportCertificateFile-->
el .c

<type opt="GB35114,GB35114Service">
<!--ro, req, enum, types of certificates that can be exported, subType:string, attr:opt{req, string}, desc:“GB35114” (support exporting GB35114
certificate for the client), “GB35114Service” (support exporting GB35114 certificate for the server)-->GB35114
ez

</type>
</ExportCertificateFile>
en

<isSupportGB351114FDWSFCertificate>
<!--ro, opt, bool, whether the device supports FDWSF certificate management, desc:true (support), this node is not returned (not support), related URIs:
/ISAPI/Security/GB351114/FDWSFCertificate/capabilities?format=json, POST /ISAPI/Security/GB351114/FDWSFCertificate?format=json, GET
im

/ISAPI/Security/GB351114/FDWSFCertificate?format=json, and DELETE /ISAPI/Security/GB351114/FDWSFCertificate?format=json-->true


</isSupportGB351114FDWSFCertificate>
ng

<isSupportMediaObjectEncryption>
Aj

<!--ro, opt, bool, whether supports setting encryption parameters of the private target in media data for the specified video channel, desc:if this
Co

function is supported, this node will be returned and its value is true; otherwise, this node will not be returned. Related URI:
/ISAPI/Security/MediaObjectEncryption/capabilities?format=json-->true
</isSupportMediaObjectEncryption>
<isSupportDisclaimer>
<!--ro, opt, bool, whether support configuring the product disclaimer, desc:if this function is supported, this node will be returned and its value is
true; otherwise, this node will not be returned. Related URI: /ISAPI/Security/disclaimer/capabilities?format=json-->true
</isSupportDisclaimer>
<isSupportSoftwareLicense>
<!--ro, opt, bool, whether support configuring the product open source statement, desc:if this function is supported, this node will be returned and its
value is true; otherwise, this node will not be returned. Related URI: /ISAPI/Security/softwareLicense?format=json-->true
</isSupportSoftwareLicense>
<isSupportInstallerCap>
<!--ro, opt, bool, whether the device supports getting the installer permission, desc:if this function is supported, this node will be returned and its
value is true; otherwise, this node will not be returned. Related URI: /ISAPI/Security/UserPermission/installer/capabilities?format=json-->true
</isSupportInstallerCap>
<isSupportResetPasswordFile>
<!--ro, opt, bool, whether the device supports exporting and importing the secret key file of device in the LAN, desc:Related URI:
/ISAPI/Security/resetPassword/keyFile/capabilities?format=json-->true
</isSupportResetPasswordFile>
<isNotSupportLogSeverCertificate>
<!--ro, opt, bool, whether the device support importing log server certificate, desc:related URI: /ISAPI/Security/serverCertificate/certificate-->true
</isNotSupportLogSeverCertificate>
<isSupportLocalLoginCfg>
<!--ro, opt, bool, whether it supports the capability of device local login parameters, desc:GET/PUT /ISAPI/Security/LocalLoginCfg?format=json-->true
<!--ro, opt, bool, whether it supports the capability of device local login parameters, desc:GET/PUT /ISAPI/Security/LocalLoginCfg?format=json-->true
</isSupportLocalLoginCfg>
<isSupportGetProtocolFirewallRulesFileImportStatus>
<!--ro, opt, bool, N/A, desc:GET /ISAPI/Security/GetProtocolFirewallRulesFileImportStatus?format=json-->true
</isSupportGetProtocolFirewallRulesFileImportStatus>
<isSupportImportProtocolFirewallRulesFile>
<!--ro, opt, bool, N/A, desc:PUT /ISAPI/Security/ImportProtocolFirewallRulesFile?format=json-->true
</isSupportImportProtocolFirewallRulesFile>
<isSupportGetProtocolFirewallEngineUpgradeStatus>
<!--ro, opt, bool, N/A, desc:GET /ISAPI/Security/GetProtocolFirewallEngineUpgradeStatus?format=json-->true
</isSupportGetProtocolFirewallEngineUpgradeStatus>
<isSupportUpgradeProtocolFirewallEngine>
<!--ro, opt, bool, N/A, desc:PUT /ISAPI/Security/UpgradeProtocolFirewallEngine?format=json-->true
</isSupportUpgradeProtocolFirewallEngine>
<isSupportProtocolFirewallVersionInfo>
<!--ro, opt, bool, N/A, desc:GET /ISAPI/Security/ProtocolFirewallVersionInfo?format=json-->true
</isSupportProtocolFirewallVersionInfo>

m
<isSupportProtocolFirewallParams>

co
<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/Security/ProtocolFirewallParams?format=json-->true
</isSupportProtocolFirewallParams>
<isSupportResetPasswordBySecurityPhoneNo>

a.
<!--ro, opt, bool, whether it supports resetting device password with phone number verification,
desc:1. attendance check devices support applying a preset phone number during device activation. The user can reset the device password with the preset

C. arc
phone number, which is similar with password reset via email. The phone number can be changed on the website or local UI of the device
2. if the node is not returned or the returned value is false, it indicates "no"-->true
</isSupportResetPasswordBySecurityPhoneNo>
<isSupportGetIntrusionPreventionEngineUpgradeStatus>

s, em
<!--ro, opt, bool-->true
</isSupportGetIntrusionPreventionEngineUpgradeStatus>

A
<isSupportIntrusionPreventionEngineVersionInfo>

no fr
<!--ro, opt, bool-->true
</isSupportIntrusionPreventionEngineVersionInfo>
<isSupportIntrusionPreventionParams>

ri on
<!--ro, opt, bool-->true
</isSupportIntrusionPreventionParams>

Ma oc
<isSupportUpgradeIntrusionPreventionEngine>
<!--ro, opt, bool-->true
</isSupportUpgradeIntrusionPreventionEngine>
up
<notSupportImportCertificateType opt="CA,CCClentCertificate,GB35114,GB35114Service">
<!--ro, opt, string, attr:opt{req, string}-->test
</notSupportImportCertificateType>
co gr

</SecurityCap>
es a@

16.1.9.3 Get the device's system capability


Fr rc

Request URL
y ema

GET /ISAPI/System/capabilities
Query Parameter
os fr

None
ad on

Request Message
el .c

None
Response Message
ez
en

<?xml version="1.0" encoding="UTF-8"?>


<DeviceCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<!--ro, req, object, system capability of the device, attr:version{opt, string, protocolVersion}-->
im

<isSupportPreview>
ng

<!--ro, opt, bool, whether the device supports live view-->true


Aj

</isSupportPreview>
<isSupportSystemMaintain>
Co

<!--ro, opt, bool, whether the device supports system maintenance, desc:for traffic devices, this node is required and must be true.-->true
</isSupportSystemMaintain>
<isSupportReboot>
<!--ro, opt, bool, whether the device supports rebooting, desc:for traffic devices, this node is required and must be true.-->true
</isSupportReboot>
<isSupportFactoryReset>
<!--ro, opt, bool, whether the device supports restoring to default settings, desc:for traffic devices, this node is required and must be true.-->true
</isSupportFactoryReset>
<isSupportConfigurationData>
<!--ro, opt, bool, whether the device supports importing and exporting the configuration files safely, desc:for traffic devices, this node is required
and must be true.-->true
</isSupportConfigurationData>
<isSupportUpdatefirmware>
<!--ro, opt, bool, whether the device supports upgrading, desc:for traffic devices, this node is required and must be true.-->true
</isSupportUpdatefirmware>
<isSupportDeviceInfo>
<!--ro, opt, bool, whether the device supports getting the device information, desc:for traffic devices, this node is required and must be true.-->true
</isSupportDeviceInfo>
<isSupportTime>
<!--ro, opt, bool, whether the device supports time configuration, desc:for traffic device, this node is required and must be true. For other devices,
the isSupportTimeCap is used to configure time-->true
</isSupportTime>
<SysCap>
<!--ro, opt, object, system capability-->
<!--ro, opt, object, system capability-->
<isSupportDst>
<!--ro, opt, bool, whether the device supports DST (Daylight Saving Time)-->true
</isSupportDst>
<NetworkCap>
<!--ro, opt, object, network capability, desc:related URI: /ISAPI/System/Network/capabilities-->
<isSupportWireless>
<!--ro, req, bool, whether the device supports wireless network-->true
</isSupportWireless>
<isSupportWAN>
<!--ro, opt, bool, whether the device supports WAN (Wide Area Network)-->true
</isSupportWAN>
<isSupportPPPoE>
<!--ro, req, bool, whether the device supports PPPoE (Point to Point Protocol over Ethernet)-->true
</isSupportPPPoE>
<isSupportBond>

m
<!--ro, req, bool, whether the device supports NIC (Network Interface Card) bonding-->true
</isSupportBond>

co
<isSupport802_1x>
<!--ro, req, bool, whether the device supports 802.1x protocol-->true

a.
</isSupport802_1x>
<isSupportNtp>
<!--ro, opt, bool, whether the device supports NTP (Network Time Protocol)-->true

C. arc
</isSupportNtp>
<isSupportFtp>
<!--ro, opt, bool, whether the device supports FTP (File Transfer Protocol)-->true
</isSupportFtp>

s, em
<isSupportUpnp>
<!--ro, opt, bool, whether the device supports UPnP (Universal Plug and Play ) protocol-->true

A
</isSupportUpnp>

no fr
<isSupportPNP>
<!--ro, opt, bool, whether the device supports plug-and-play protocol-->true

ri on
</isSupportPNP>
<isSupportDdns>
<!--ro, opt, bool, whether the device supports DDNS (Dynamic Domain Name System) service-->true

Ma oc
</isSupportDdns>
<isSupportHttps>
<!--ro, opt, bool, whether the device supports HTTPS (Hypertext Transfer Protocol Secure)-->true
up
</isSupportHttps>
<isSupport28181>
<!--ro, opt, bool, N/A-->true
co gr

</isSupport28181>
<SnmpCap>
es a@

<!--ro, opt, object, SNMP (Simple Network Management Protocol) capability-->


<isSupport>
<!--ro, req, bool, whether the device supports SNMP-->true
Fr rc

</isSupport>
</SnmpCap>
<isSupportExtNetCfg>
y ema

<!--ro, opt, bool, whether the device supports configuring extended network parameters-->true
</isSupportExtNetCfg>
<isSupportIPFilter>
<!--ro, opt, bool, whether the device supports IP filtering-->true
os fr

</isSupportIPFilter>
<isSupportSSH opt="true,false">
ad on

<!--ro, opt, bool, whether the device supports SSH, attr:opt{opt, string}-->true
</isSupportSSH>
<isSupportNetPreviewStrategy>
el .c

<!--ro, opt, bool, whether the device supports network preview strategy-->true
</isSupportNetPreviewStrategy>
<isSupportEZVIZ>
ez

<!--ro, opt, bool, whether the device supports EZ protocol-->true


</isSupportEZVIZ>
en

<isSupportEhome>
<!--ro, opt, bool, whether it supports ISUP functions: true (support),this node is not returned (not support)-->true
</isSupportEhome>
im

<isSupportWirelessDial>
<!--ro, opt, bool, whether the device supports wireless dial-up protocol-->true
ng

</isSupportWirelessDial>
Aj

<isSupportWirelessServer>
<!--ro, opt, bool, whether the device supports wireless server-->true
Co

</isSupportWirelessServer>
<isSupportWPS>
<!--ro, opt, bool, whether the device supports Wi-Fi Protected Setup-->true
</isSupportWPS>
<isWirelessMutexWithWirelessServer>
<!--ro, opt, bool, whether the device supports mutual exclusion of wireless access and wireless service-->true
</isWirelessMutexWithWirelessServer>
<isSupportMACFilter>
<!--ro, opt, bool, whether the device supports physical address filtering-->true
</isSupportMACFilter>
<GB28181Cap>
<!--ro, opt, object, N/A-->
<isSupportGB28181Service>
<!--ro, opt, bool, N/A-->true
</isSupportGB28181Service>
</GB28181Cap>
<WPS>
<!--ro, opt, object, Wi-Fi Protected Setup-->
<NetworkInterfaceList size="2">
<!--ro, opt, array, list of network nodes, subType:object, attr:size{opt, string}-->
<NetworkInterface>
<!--ro, opt, object, network node-->
<id>
<id>
<!--ro, req, string, NIC index-->1
</id>
<enabled>
<!--ro, req, bool, whether to enable or not-->true
</enabled>
<isSupportAutoConnect>
<!--ro, opt, bool, whether the device supports automatic connection-->true
</isSupportAutoConnect>
<isSupportDevicePinCode>
<!--ro, opt, bool, whether the device supports PIN code-->true
</isSupportDevicePinCode>
<isSupportDevicePinCodeUpdate>
<!--ro, opt, bool, whether the device supports updating the PIN code-->true
</isSupportDevicePinCodeUpdate>
<ApPinCode>
<!--ro, opt, object, PIN code of the access point-->

m
<ssid min="1" max="1">

co
<!--ro, opt, string, SSID (Service Set Identifier), attr:min{opt, string},max{opt, string}-->test
</ssid>
<pinCode min="1" max="1">

a.
<!--ro, opt, string, PIN code, attr:min{opt, string},max{opt, string}-->test
</pinCode>

C. arc
</ApPinCode>
</NetworkInterface>
</NetworkInterfaceList>
</WPS>
<isSupportRFIDData>

s, em
<!--ro, opt, bool, whether the device supports RFID collection configuration-->true

A
</isSupportRFIDData>

no fr
<isSupportwifiProbeSSID>
<!--ro, opt, bool, whether the device supports configuration of Wi-Fi probe SSID-->true
</isSupportwifiProbeSSID>

ri on
<isSupportWifiProbe>
<!--ro, opt, bool, whether the device supports Wi-Fi probe-->true
</isSupportWifiProbe>

Ma oc
<verificationCode min="1" max="1">
<!--ro, opt, string, verification code, attr:min{opt, string},max{opt, string}-->test
up
</verificationCode>
<WPSCap>
<!--ro, opt, object, capability of configuring Wi-Fi Protected Setup-->
co gr

<isSupport>
<!--ro, req, bool, whether the device supports Wi-Fi Protected Setup-->true
</isSupport>
es a@

<isSupportAutoConnect>
<!--ro, req, bool, whether the device supports automatic connection-->true
Fr rc

</isSupportAutoConnect>
s

</WPSCap>
<NetWorkMode>
y ema

<!--ro, opt, object, network mode configuration-->


<workMode>
<!--ro, opt, string, network mode-->true
</workMode>
os fr

</NetWorkMode>
<VerificationCodeModification>
<!--ro, opt, object, device verification code configuration-->
ad on

<verificationCodeType opt="normal,empty">
<!--ro, opt, string, verification code type, attr:opt{opt, string}-->true
el .c

</verificationCodeType>
<isSupportDeclarationURL>
<!--ro, opt, bool, whether the device supports the hyperlink to the Terms of Service-->true
ez

</isSupportDeclarationURL>
<isSupportPrivacyPolicyURL>
<!--ro, opt, bool, whether the device supports the hyperlink to the Privacy Policy-->true
en

</isSupportPrivacyPolicyURL>
<verificationCodeModify opt="true,false">
<!--ro, opt, bool, whether the device verification code has been modified, attr:opt{opt, string}-->true
im

</verificationCodeModify>
ng

<Hyperlinks>
Aj

<!--ro, opt, object, hyperlink configuration-->


<declarationURL>
Co

<!--ro, opt, string, hyperlink to the Terms of Service-->test


</declarationURL>
<privacyPolicyURL>
<!--ro, opt, string, hyperlink to the Privacy Policy-->test
</privacyPolicyURL>
</Hyperlinks>
<isSupportVerificationCodeCheck>
<!--ro, opt, bool, whether the device supports verifying the verification code-->true
</isSupportVerificationCodeCheck>
<isSupportOldVerificationCode>
<!--ro, opt, bool, whether the device supports the EZ password configuration of old version (the password of old version consists of six
characters)-->true
</isSupportOldVerificationCode>
</VerificationCodeModification>
<isSupportIntegrate>
<!--ro, opt, bool, whether the device supports access protocol configuration-->true
</isSupportIntegrate>
<isSupportPlatformAccess>
<!--ro, opt, bool, whether the device supports platform access-->true
</isSupportPlatformAccess>
<isSupportIntelligentBoost>
<!--ro, opt, bool, whether the device supports intelligent acceleration-->true
</isSupportIntelligentBoost>
<isSupportResourceStatistics>
<isSupportResourceStatistics>
<!--ro, opt, bool, whether the device supports getting the network resource information-->true
</isSupportResourceStatistics>
<isSupportBandwidthLimit>
<!--ro, opt, bool, whether the device supports bandwidth limit-->true
</isSupportBandwidthLimit>
<isSupportPOEPortsDisableAdaptiveServer>
<!--ro, opt, bool, whether the device supports the POE protocol-->true
</isSupportPOEPortsDisableAdaptiveServer>
<isSupportPOEConfiguration>
<!--ro, opt, bool, whether the device supports configuring the POE NIC parameters-->true
</isSupportPOEConfiguration>
<isSupportGetLinkSocketIP>
<!--ro, opt, bool, whether the device supports getting the SocketIP of the current link-->true
</isSupportGetLinkSocketIP>
<isSupportWebSocket>

m
<!--ro, opt, bool, whether the device supports WebSocket-->true
</isSupportWebSocket>

co
<isSupportWebSocketS>
<!--ro, opt, bool, whether the device supports WebSocketS-->true

a.
</isSupportWebSocketS>
<Adaption>
<!--ro, opt, object, network self-adaption configuration-->

C. arc
<streamType opt="0,1,2,3,4,5,7,8,9,10">
<!--ro, opt, string, stream type that supports network self-adaption during live view, attr:opt{opt, string}, desc:0 (main stream), 1 (sub-
stream), 2 (third stream), 3 (fourth stream/virtual stream), 4 (fifth stream), 5 (sixth stream), 7 (seventh stream), 8 (eighth stream), 9 (ninth stream), 10
(tenth stream), and so forth. The index value here is the same as that in the live view structure NET_DVR_PREVIEWINFO of Device Network SDK. Note that 6 is

s, em
an invalid value, and from the seventh stream (index value: 7), the index value is the same as that for live view via RTSP-->test
</streamType>

A
<isSupportPlayback>

no fr
<!--ro, opt, bool, whether the device supports playback-->true
</isSupportPlayback>

ri on
</Adaption>
<isSupportVideoImgDB>
<!--ro, opt, bool, whether the device supports image and video library configuration-->true

Ma oc
</isSupportVideoImgDB>
<isSupportEventDataOverWebSocket opt="true,false">
<!--ro, opt, bool, whether the device supports uploading the event data via WebSocket, attr:opt{opt, string}-->true
up
</isSupportEventDataOverWebSocket>
<isSupportDynamicHostName>
co gr

<!--ro, opt, bool, whether the device supports DDNS (Dynamic Domain Name System) configuration-->true
</isSupportDynamicHostName>
<isSupportTCPAcceleration>
es a@

<!--ro, opt, bool, whether the device supports TCP acceleration-->true


</isSupportTCPAcceleration>
<isSupportFlowControl>
Fr rc

<!--ro, opt, bool, whether the device supports traffic control-->true


</isSupportFlowControl>
y ema

<isSupportEZVIZTiming>
<!--ro, opt, bool, whether the device supports synchronizing time with EZ platform, desc:related URI: enabledTiming in the message of
/ISAPI/System/Network/EZVIZ-->true
</isSupportEZVIZTiming>
<isSupportTrafficMonitor>
os fr

<!--ro, opt, bool, whether the device supports traffic monitoring, desc:related URI:
/ISAPI/System/Network/WirelessDial/Interfaces/<ID>/trafficMonitor?format=json-->true
ad on

</isSupportTrafficMonitor>
<isSupportDMSAuthInfo>
<!--ro, opt, bool, whether the device supports DMS authentication information management-->true
el .c

</isSupportDMSAuthInfo>
<isSupportWiredandWirelessTrafficMonitor>
<!--ro, opt, bool, whether the device supports traffic monitoring (wireless NIC and wired NIC), desc:related URI:
ez

/ISAPI/System/Network/Interfaces/<ID>/trafficMonitor?format=json-->true
</isSupportWiredandWirelessTrafficMonitor>
en

<isSupport4G>
<!--ro, opt, bool, whether the device supports 4G module-->true
</isSupport4G>
im

<isSupport4GConfig>
<!--ro, opt, bool, whether the device supports 4G configuration-->true
ng

</isSupport4GConfig>
Aj

<isSupportGRIDServer>
Co

<!--ro, opt, bool, N/A-->true


</isSupportGRIDServer>
<isSupportGRIDInfo>
<!--ro, opt, bool, N/A-->true
</isSupportGRIDInfo>
<isSupportSipTransmit>
<!--ro, opt, bool, whether the device supports configuring SIP transmission parameters-->true
</isSupportSipTransmit>
<isSupportSip>
<!--ro, opt, bool, whether the device supports private SIP (VOIP)-->true
</isSupportSip>
<isSupportWifiCascade>
<!--ro, opt, bool, whether the device supports enabling automatic Wi-Fi cascading, desc:related URI: /ISAPI/System/Network/wifiCascade?format=json--
>true
</isSupportWifiCascade>
<isSupportRelativeInfo>
<!--ro, opt, bool, whether the device supports getting the information about the connected devices, desc:related URI:
/ISAPI/System/Network/wifiCascade/relativeInfo?format=json-->true
</isSupportRelativeInfo>
<isSupportEmailEncrypt>
<!--ro, opt, bool, whether the device supports email encryption configuration-->true
</isSupportEmailEncrypt>
<isSupportPortFilter>
<!--ro, opt, bool, whether the device supports port filtering-->true
<!--ro, opt, bool, whether the device supports port filtering-->true
</isSupportPortFilter>
<isSupportPingDeny>
<!--ro, opt, bool, whether the device supports configuring parameters to prevent the device from being tested using ping command-->true
</isSupportPingDeny>
<isSupportDOSDeny>
<!--ro, opt, bool, whether the device supports configuring parameters to prevent the DoS attack-->true
</isSupportDOSDeny>
<isSupportNetworkStatus>
<!--ro, opt, bool, whether the device supports searching for the network status, desc:related URI: /ISAPI/System/Network/status?format=json-->true
</isSupportNetworkStatus>
<isSupportEZVIZQRCode>
<!--ro, opt, bool-->true
</isSupportEZVIZQRCode>
<isSupportEZVIZUnbind>
<!--ro, opt, bool, whether the device supports unbinding from EZ, desc:/ISAPI/System/Network/EZVIZ/unbind?format=json-->true
</isSupportEZVIZUnbind>

m
<isSupportPingTest>

co
<!--ro, opt, bool, whether the device supports ping test, desc:Related URI: /ISAPI/System/Network/pingtest/capabilities-->true
</isSupportPingTest>
<isSupportMOTCloudPlateform>

a.
<!--ro, opt, bool, whether the device supports configuring parameters for accessing the cloud platform service, desc:related URI:
/ISAPI/System/Network/Traffic/MOTCloudPlateform/capabilities?format=json-->true

C. arc
</isSupportMOTCloudPlateform>
<isSupportSpectrumScan>
<!--ro, opt, bool, whether the device supports frequency spectrum scanning, desc:related URI:
/ISAPI/System/Network/interface/<netCardID>/spectrumScan/capabilities?format=json-->true

s, em
</isSupportSpectrumScan>
<isSupportFRP>

A
<!--ro, opt, bool, whether the device supports FRP (Fast Reverse Proxy), desc:related URI: /ISAPI/Syetem/Network/FRP?format=json-->true

no fr
</isSupportFRP>
<isSupport5GModule>
<!--ro, opt, bool, whether the device supports 5G module configuration, desc:related URI: /ISAPI/System/Network/5GModule/capabilities?format=json--

ri on
>true
</isSupport5GModule>

Ma oc
<isSupportWirelessDialRoute>
<!--ro, opt, bool, whether the device supports configuring parameters of route forwarding rules of wireless dial-up, desc:related URI:
/ISAPI/System/Network/WirelessDia/route/capabilities?format=json-->true
up
</isSupportWirelessDialRoute>
<isSupportNPlusOne>
<!--ro, opt, bool, whether the device supports N+1 protocol-->true
co gr

</isSupportNPlusOne>
<supportEnvironmentalStandards opt="HJ212">
<!--ro, opt, string, environmental monitoring standard, attr:opt{req, string}, desc:N/A-->true
es a@

</supportEnvironmentalStandards>
<isSupportIntranetSegment>
Fr rc

<!--ro, opt, bool, whether the device supports LAN segment configuration, desc:if this function is supported, this node will be returned and its
s

value is true; otherwise, this node will be returned and its value is true or not be returned. Related URI:
/ISAPI/System/Network/intranetSegment/capabilities?format=json-->true
y ema

</isSupportIntranetSegment>
<isSupportDHCPServer>
<!--ro, opt, bool, whether the device supports DHCP service configuration, desc:if this function is supported, this node will be returned and its
value is true; otherwise, this node will be returned and its value is true or not be returned. Related URI: /ISAPI/System/Network/DHCPServer/capabilities?
os fr

format=json-->true
</isSupportDHCPServer>
<isSupportClusterIntercom>
ad on

<!--ro, opt, bool, whether the 7200 intercom protocol is transmitted, desc:if this function is supported, this node will be returned and its value
is true; otherwise, this node will be returned and its value is true or not be returned.-->true
el .c

</isSupportClusterIntercom>
<isSupportHydrologicMonitoring>
<!--ro, opt, bool, whether the device supports hydrologic monitoring data communication, desc:if this function is supported, this node will be
ez

returned and its value is true; otherwise, this node will be returned and its value is true or not be returned. Related URI:
/ISAPI/System/Network/HydrologicMonitoring/capabilities?format=json-->true
</isSupportHydrologicMonitoring>
en

<isWirelessDialMutexWithWlanAndWifi>
<!--ro, opt, bool, whether the wireless dial-up is mutually exclusive with the WLAN hotspot and Wi-Fi, desc:before a function is enabled, another
im

one must be disabled first.-->true


</isWirelessDialMutexWithWlanAndWifi>
ng

<isSupportSpeechTranscription>
Aj

<!--ro, opt, bool, whether the device supports accessing the speech-to-text transcription platform, desc:if this function is supported, this node
will be returned and its value is true; otherwise, this node will be returned and its value is true or not be returned. Related URI:
Co

/ISAPI/System/Network/speechTranscriptionPlatform/capabilities?format=json-->true
</isSupportSpeechTranscription>
<isSupportAsynPingTest>
<!--ro, opt, bool, whether the device supports asynchronous network detection, desc:network detection means testing the network stability and packet
loss rate of the network using the ping command for knowing about the network condition. Related URI: /ISAPI/System/Network/asynPingTest/capabilities?
format=json.-->true
</isSupportAsynPingTest>
<isSupportBasebandCapture>
<!--ro, opt, bool, whether the device supports capturing packets of the baseband, desc:you can capture packets transmitted between the 4G module and
the base station using the ping command. Related URI: /ISAPI/System/Network/cellularNetwork/basebandCapture/capabilities?format=json.-->true
</isSupportBasebandCapture>
<isSupportCellularNetworkSpeedTest>
<!--ro, opt, bool, whether the device supports testing the connection speed between the device and the cellular network, desc:you can test the
connection speed of the network where the current device is. Related URI: /ISAPI/System/Network/cellularNetwork/speedTest/capabilities?format=json.-->true
</isSupportCellularNetworkSpeedTest>
<isSupportCellularNetworkCellInfo>
<!--ro, opt, bool, whether the device supports getting a cell's information of the cellular network, desc:you can get the information of the
cellular network where the device is. Related URI: /ISAPI/System/Network/cellularNetwork/cellInfo?format=json&ecurity=<security>&iv=<iv>.-->true
</isSupportCellularNetworkCellInfo>
<isSupportMultiBandFrequencyScanning>
<!--ro, opt, bool, whether the device supports scanning all frequency bands of the cellular network, desc:related URI:
/ISAPI/System/Network/cellularNetwork/multiBandFrequencyScanning/capabilities?format=json-->true
</isSupportMultiBandFrequencyScanning>
<isSupportCellularNetworkLockBand>
<!--ro, opt, bool, whether the device accessing the locked frequency band of the cellular network, desc:related URI:
/ISAPI/System/Network/cellularNetwork/lockBand/capabilities?format=json-->true
</isSupportCellularNetworkLockBand>
<isSupportRadioFrequencyFluctuation>
<!--ro, opt, bool, whether the device supports configuring RF parameters of the cellular network, desc:related URI:
/ISAPI/System/Network/cellularNetwork/radioFrequencyFluctuation/capabilities?format=json-->true
</isSupportRadioFrequencyFluctuation>
<isSupportBasebandBlock>
<!--ro, opt, bool, whether the device supports the unauthorized list of the base station, desc:related URI:
/ISAPI/System/Network/cellularNetwork/basebandBlock/capabilities?format=json-->true
</isSupportBasebandBlock>
<isSupportRFIDTagCheckTest>
<!--ro, opt, bool, whether the device supports the RFID tag disk storage performance test, desc:related URI: GET
/ISAPI/System/Network/RFIDData/GetTagCheckTestInfo?format=json-->true
</isSupportRFIDTagCheckTest>

m
<isSupportQoSDSCPtoLoaclPriorityMapping>

co
<!--ro, opt, bool, whether the device supports DSCP and local mapping priority configuration, desc:related URI:
/ISAPI/System/Network/qos/DSCPtoLoaclPriorityMapping/capabilities?format=json-->true
</isSupportQoSDSCPtoLoaclPriorityMapping>

a.
<isSupportQoS802.1pto802.1pPriorityMapping>
<!--ro, opt, bool, whether the device supports 802.1p mapping priority configuration, desc:related URI:
/ISAPI/System/Network/qos/802.1pto802.1pPriorityMapping/capabilities?format=json-->true

C. arc
</isSupportQoS802.1pto802.1pPriorityMapping>
<isSupportLinkTestStart>
<!--ro, opt, bool, whether the network link test is enabled, desc:related URI:
/ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/LinkTest/Start?format=json-->true

s, em
</isSupportLinkTestStart>
<isSupportLinkTestResult>

A
no fr
<!--ro, opt, bool, whether the device supports getting the result of network link test, desc:related URI:
/ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/LinkTest/Start?format=json-->true
</isSupportLinkTestResult>

ri on
<isSupportNetworkModuleUpgrade>
<!--ro, opt, bool, whether it supports upgrading network module, desc:including importing upgrade package
(/ISAPI/System/Network/WirelessDial/ImportUpgradePackage?format=json), getting importing progress

Ma oc
(/ISAPI/System/Network/WirelessDial/GetUpgradePackageImportStatus?format=json), starting upgrade
(/ISAPI/System/Network/WirelessDial/StartUpgradeNetworkModule?format=json)-->true
</isSupportNetworkModuleUpgrade>
up
<isSupportNetworkModuleVersionInfo>
<!--ro, opt, bool, whether it supports getting the version information of network module, desc:GET
co gr

/ISAPI/System/Network/WirelessDial/NetworkModuleVersionInfo?format=json-->true
</isSupportNetworkModuleVersionInfo>
<isSupportGreenShieldPlatform>
es a@

<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/System/Network/GreenShieldPlatform/GreenShieldPlatform?format=json-->true


</isSupportGreenShieldPlatform>
<isSupportFusionUniversalApplicationPlatCfg>
Fr rc

<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/System/Network/FusionUniversalApplicationPlatform/FusionUniversalApplicationPlatCfg?format=json-->true


</isSupportFusionUniversalApplicationPlatCfg>
y ema

<isSupportModbusAccess>
<!--ro, opt, bool-->true
</isSupportModbusAccess>
<isSupportModbusTestSubordinateStatus>
os fr

<!--ro, opt, bool-->true


</isSupportModbusTestSubordinateStatus>
</NetworkCap>
ad on

<IOCap>
<!--ro, opt, object, I/O capability, desc:related URI: /ISAPI/System/IO/capabilities-->
<IOInputPortNums>
el .c

<!--ro, opt, int, number of local input ports of the device-->true


</IOInputPortNums>
ez

<IOOutputPortNums>
<!--ro, opt, int, number of local output ports of the device-->true
</IOOutputPortNums>
en

<isSupportStrobeLamp>
<!--ro, opt, bool, whether the device supports configuring the output of the gate's light, desc:related URI:
/ISAPI/System/IO/outputs/strobelampConf-->true
im

</isSupportStrobeLamp>
<SoftIOInputPortNums>
ng

<!--ro, opt, int, number of soft input ports of the device, desc:this node depends on whether the URI /ISAPI/System/IO/softInputs/capabilities?
Aj

format=json is supported.-->true
Co

</SoftIOInputPortNums>
<isSupportIOOutputAdvanceParameter>
<!--ro, opt, bool, whether the device supports configuring advanced parameters of the output port, desc:this node determines whether the URI
/ISAPI/System/IO/outputs/advanceParameter/capabilities?format=json is supported.-->true
</isSupportIOOutputAdvanceParameter>
<isSupportSetAllIOOutput>
<!--ro, opt, bool, whether the device supports configuring all output ports, desc:this node determines whether the PUT method of the URI
/ISAPI/System/IO/outputs is supported.-->true
</isSupportSetAllIOOutput>
<isSupportCombinationAlarm>
<!--ro, opt, bool, whether the device supports the combined alarm, desc:CombinationAlarmCap in /ISAPI/System/IO/inputs/capabilities-->true
</isSupportCombinationAlarm>
<isSupportAlarmKeyParam>
<!--ro, opt, bool, whether supports configuring the physical keys of one-push alarm, desc:related URI:
/ISAPI/System/IO/inputs/<IOInputID>/AlarmKeyParam/capabilities?format=json-->true
</isSupportAlarmKeyParam>
<isSupportWebDisplayAlarmStatus>
<!--ro, opt, bool-->true
</isSupportWebDisplayAlarmStatus>
</IOCap>
<SerialCap>
<!--ro, opt, object, range of RS-485 serial port numbers supported by the device-->
<rs485PortNums>
<!--ro, opt, int, the maximum number of RS-485 serial ports supported by the device-->true
<!--ro, opt, int, the maximum number of RS-485 serial ports supported by the device-->true
</rs485PortNums>
<supportRS232Config>
<!--ro, opt, bool, whether the device supports configuring parameters of RS-232 serial ports-->true
</supportRS232Config>
<rs422PortNums>
<!--ro, opt, int, the maximum number of RS-422 serial ports supported by the device-->true
</rs422PortNums>
<rs232PortNums>
<!--ro, opt, int, the maximum number of RS-232 serial ports supported by the device-->true
</rs232PortNums>
<rs485WorkMode opt="Led,CaptureTrigger">
<!--ro, opt, string, RS-485 working modes supported by the device, attr:opt{opt, string}, desc:Led (external LED screen, which is used for LED
display), CaptureTrigger (external device, which is used to trigger the transmission of the captured data)-->test
</rs485WorkMode>
<rs232SerialNumber opt="1,2,3">

m
<!--ro, opt, string, range of RS-232 serial port numbers supported by the device, attr:opt{opt, string}-->test
</rs232SerialNumber>

co
<rs485SerialNumber opt="4,5,6">
<!--ro, opt, string, range of RS-485 serial port numbers supported by the device, attr:opt{opt, string}-->test

a.
</rs485SerialNumber>
<isSupportAuthenticationService>
<!--ro, opt, bool, whether the device supports the serial port authentication service-->true

C. arc
</isSupportAuthenticationService>
<isSupportDeviceInfo>
<!--ro, opt, bool, whether the device supports configuring the information about the serial port device-->true
</isSupportDeviceInfo>

s, em
<isSupportSearchDeviceInfoRelations>
<!--ro, opt, bool, whether the device supports searching the linkage information of the serial port device-->true

A
</isSupportSearchDeviceInfoRelations>

no fr
</SerialCap>
<VideoCap>
<!--ro, opt, object, video encoding capability, desc:related URI: /ISAPI/System/Video/capabilities-->

ri on
<videoInputPortNums>
<!--ro, opt, int, number of video input ports-->true

Ma oc
</videoInputPortNums>
<videoOutputPortNums>
<!--ro, opt, int, number of video output ports-->true
up
</videoOutputPortNums>
<menuNums>
<!--ro, opt, int, number of local menus that can be displayed-->true
co gr

</menuNums>
<externalChannelNum>
es a@

<!--ro, opt, bool, number of extended analog channels-->true


</externalChannelNum>
<isSupportHeatmap>
Fr rc

<!--ro, opt, bool, whether the device supports heat map-->true


</isSupportHeatmap>
<isSupportCounting>
y ema

<!--ro, opt, bool, whether the device supports people counting-->true


</isSupportCounting>
<countingType>
<!--ro, opt, string, statistics type, desc:human (people counting); object (counting)-->test
os fr

</countingType>
<isSupportPicture>
<!--ro, opt, bool, whether the device supports OSD picture overlay-->true
ad on

</isSupportPicture>
<isSupportPreviewSwitch>
el .c

<!--ro, opt, bool, whether the device supports switching live view-->true
</isSupportPreviewSwitch>
<isSupportMultiChannelCounting>
ez

<!--ro, opt, bool, whether the device supports multichannel statistics-->true


</isSupportMultiChannelCounting>
<isSupportCountingCollection>
en

<!--ro, opt, bool, whether the device supports people counting ANR-->true
</isSupportCountingCollection>
im

<isSupportHeatmapCollection>
<!--ro, opt, bool, whether the device supports heat map data ANR-->true
ng

</isSupportHeatmapCollection>
Aj

<channelFlexible opt="name,online,linknum">
<!--ro, opt, string, this node is located after the node <isSupportHeatmapCollection>., attr:opt{opt, string}-->true
Co

</channelFlexible>
<isSupportMixedChannel>
<!--ro, opt, bool, this node is located after the node <channelFlexible>.-->true
</isSupportMixedChannel>
<isSupportMixedChannelStatus>
<!--ro, opt, bool, this node is located after the node <isSupportMixedChannel>.-->true
</isSupportMixedChannelStatus>
<isSupportRecodStatus>
<!--ro, opt, bool, whether the device supports searching for the recording status-->true
</isSupportRecodStatus>
<isSupportPrivacyMask>
<!--ro, opt, bool, whether the device supports privacy mask-->true
</isSupportPrivacyMask>
<isSupportBinocularPreviewSwitch>
<!--ro, opt, bool, whether the device supports switching live view of the dual-lens camera-->true
</isSupportBinocularPreviewSwitch>
<isSupportCalibCheck>
<!--ro, opt, bool, whether the device supports calibration verification-->true
</isSupportCalibCheck>
<isSupportPIP>
<!--ro, opt, bool, whether the device supports PIP-->true
</isSupportPIP>
<isSupportFocusVideoMode>
<!--ro, opt, bool, whether the device supports the focus mode of the video-->true
</isSupportFocusVideoMode>
<isSupportExternalChannel>
<!--ro, opt, bool, whether the device supports extended analog channels-->true
</isSupportExternalChannel>
<isSupportCompressedTranscode>
<!--ro, opt, bool, whether the device supports configuring the encoding compression of transcoding stream, desc:related URL:
/ISAPI/Streaming/channels/<channelID>/TranscodeCfg/capabilities?format=json-->true
</isSupportCompressedTranscode>
<isSupportLocalStreamCfg>
<!--ro, opt, bool, whether the device supports configuring the streaming parameters of local device, desc:related URL:
/ISAPI/System/Video/inputs/channels/<channelID>/LocalStreamCfg/capabilities?format=json-->true
</isSupportLocalStreamCfg>
<isSupportMenuStatus>
<!--ro, opt, bool-->true
</isSupportMenuStatus>

m
</VideoCap>

co
<AudioCap>
<!--ro, opt, object, audio encoding capability, desc:related URL: /ISAPI/System/Audio/capabilities-->
<audioInputNums>

a.
<!--ro, req, int, number of audio inputs-->1
</audioInputNums>
<audioOutputNums>

C. arc
<!--ro, req, int, number of audio outputs-->1
</audioOutputNums>
<mixAudioInSet>
<!--ro, opt, bool, N/A-->true

s, em
</mixAudioInSet>

A
<mixAudioOutSet>

no fr
<!--ro, opt, bool, N/A-->true
</mixAudioOutSet>
<isSupportAudioMixing>

ri on
<!--ro, opt, bool, whether the device supports audio mixing-->true
</isSupportAudioMixing>
<isSupportRemoveFrequencyPoint>

Ma oc
<!--ro, opt, bool, whether the device supports clearing the howling frequency point-->true
</isSupportRemoveFrequencyPoint>
up
<isSupportAudioInConfig>
<!--ro, opt, bool, whether the device supports configuring parameters of all audio inputs, desc:related URI:
/ISAPI/System/Audio/AudioIn/capabilities-->true
co gr

</isSupportAudioInConfig>
<muteDuringPanTilt opt="MicIn">
<!--ro, opt, string, whether the device supports muting during motion, attr:opt{opt, string}, desc:muteDuringPanTilt in
es a@

/ISAPI/System/TwoWayAudio/channels/ID-->true
</muteDuringPanTilt>
<isSupportAudioOutConfig>
Fr rc

<!--ro, opt, bool, whether the device supports configuring parameters of all audio outputs, desc:related URI:
/ISAPI/System/Audio/AudioOut/capabilities?format=json-->true
y ema

</isSupportAudioOutConfig>
<isSupportSAIP>
<!--ro, opt, bool, whether the device supports connecting to the independent audio track channel-->true
</isSupportSAIP>
os fr

<SAIPChannelsNum>
<!--ro, opt, int, number of devices that supports connecting to the independent audio track channel, dep:and,{$.AudioCap.isSupportSAIP,eq,true}-->1
</SAIPChannelsNum>
ad on

<isSupportDataStorage>
<!--ro, opt, bool, whether the device supports uploading the audio file, desc:related URL: /ISAPI/System/Audio/dataStorage?format=json-->true
</isSupportDataStorage>
el .c

<isSupportDataRelease>
<!--ro, opt, bool, whether the device supports releasing the audio file, desc:related URL: /ISAPI/System/Audio/dataRelease?format=json-->true
ez

</isSupportDataRelease>
<isSupportAudioPlan>
<!--ro, opt, bool, whether the device supports the audio scheme plan, desc:related URL: /ISAPI/System/Audio/plan?format=json-->true
en

</isSupportAudioPlan>
<isSupportAudioTask>
<!--ro, opt, bool, whether the device supports the audio scheme task, desc:related URL: /ISAPI/System/Audio/plan/<PlanID>/task?format=json-->true
im

</isSupportAudioTask>
ng

<isSupportaudioCollection>
Aj

<!--ro, opt, bool, whether the device supports collecting audio files, desc:related URL: /ISAPI/System/Audio/audioCollection/capabilities?
format=json; maintenance function, it is used for collecting audio to analyze audio questions-->true
Co

</isSupportaudioCollection>
<isSupportWirelessPickUp>
<!--ro, opt, bool, whether the device supports connecting wireless pickup, desc:related URL: /ISAPI/System/Audio/wirelessPickUp/capabilities?
format=json-->true
</isSupportWirelessPickUp>
<audioOutputBroadcastNums opt="1,2,3,4">
<!--ro, opt, int, number of audio broadcast outputs, attr:opt{opt, string}, desc:at present, this node is only supported by broadcast audio devices
when opt="1,2,3,4" is returned and , the output depends on the actual node; when not returned, the output starts from 1 by default according to business
type, the audio devices classify the output ports into broadcast output port and audio output port considering the start No. of every output starts from 1,
it should return the specific number of supported broadcast outputs if this node is returned, it indicates that the device supports the audio output volume
configuration; otherwise, the device does not support. Corresponding URI: /ISAPI/System/Audio/AudioOut/broadcast/capabilities?format=json-->0
</audioOutputBroadcastNums>
<isSupportAudioOutMixing>
<!--ro, opt, bool, whether the device supports outputting audio mix, desc:related URL: /ISAPI/System/Audio/AudioOut/mixing/capabilities?format=json-
->true
</isSupportAudioOutMixing>
<isSupportRTSPAudio>
<!--ro, opt, bool, whether the device supports listening to the audio transmitted via RTSP in real time, desc:RTSP URI:
/ISAPI/System/Audio/AudioIn/channels/<audioID>-->true
</isSupportRTSPAudio>
<isSupportRTSPAudioPlaybackByFile>
<!--ro, opt, bool, whether the device supports playing back audio transmitted via RTSP according to files, desc:the RTSP streaming URL is
playbackURI returned by /ISAPI/ContentMgmt/recordAudio/search?format=json-->true
</isSupportRTSPAudioPlaybackByFile>
</isSupportRTSPAudioPlaybackByFile>
</AudioCap>
<isSupportHolidy>
<!--ro, opt, bool, This node is located after the node <AudioCap>.-->true
</isSupportHolidy>
<RebootConfigurationCap>
<!--ro, opt, object, capability of configuring parameters for rebooting the device, desc:related URI: /ISAPI/System/reboot/capabilities. This node is
located before the node <isSupportSubscribeEvent> and after the node <isSupportHolidy>.-->
<Genetec>
<!--ro, opt, bool, whether to enable the Genetec protocol-->true
</Genetec>
<ONVIF>
<!--ro, opt, bool, whether to enable the ONVIF protocol-->true
</ONVIF>
<RTSP>
<!--ro, opt, bool, whether to enable the RTSP protocol-->true

m
</RTSP>
<HTTP>

co
<!--ro, opt, bool, whether to enable the HTTP protocol-->true
</HTTP>

a.
<SADP>
<!--ro, opt, object, SADP (Search Active Devices Protocol, including the link layer and multicast discovery)-->
<ISDiscoveryMode>

C. arc
<!--ro, opt, bool, mode of the SADP multicast discovery protocol-->true
</ISDiscoveryMode>
<PcapMode>
<!--ro, opt, bool, mode of the SADP link layer discovery protocol-->true

s, em
</PcapMode>
</SADP>

A
<IPCAddStatus>

no fr
<!--ro, opt, bool, IP address status-->true
</IPCAddStatus>

ri on
</RebootConfigurationCap>
<isSupportExternalDevice>
<!--ro, opt, bool, whether the device supports connecting to peripherals: true (support), desc:related URI: /ISAPI/System/externalDevice/capabilities-

Ma oc
->true
</isSupportExternalDevice>
<isSupportSoundCfg>
up
<!--ro, opt, bool, whether the device supports the sound configuration, desc:related URI: /ISAPI/System/SoundCfg/capabilities-->true
</isSupportSoundCfg>
<isSupportSubscribeEvent>
co gr

<!--ro, opt, bool, whether the device supports subscribing to events, desc:related URI: /ISAPI/Event/notification/subscribeEventCap-->true
</isSupportSubscribeEvent>
es a@

<isSupportSubscribeIOTInfo>
<!--ro, opt, bool, whether the device supports subscribing to the IoT information-->true
</isSupportSubscribeIOTInfo>
Fr rc

<isSupportDiagnosedData>
<!--ro, opt, bool, whether the device supports exporting the device diagnosis data, desc:true (support), this node is not returned (not support).
related URI: /ISAPI/System/diagnosedData.-->true
y ema

</isSupportDiagnosedData>
<isSupportChangedUpload>
<!--ro, opt, bool, whether the device supports uploading changes-->true
</isSupportChangedUpload>
os fr

<isSupportGettingWorkingStatus>
<!--ro, opt, bool, whether the device supports getting the device status-->true
ad on

</isSupportGettingWorkingStatus>
<isSupportGettingChannelInfoByCondition>
<!--ro, opt, bool, whether the device supports getting the channel information by condition-->true
el .c

</isSupportGettingChannelInfoByCondition>
<isSupportDiagnosedDataParameter>
<!--ro, opt, bool, whether the device supports enabling or disabling exporting the diagnosis information-->true
ez

</isSupportDiagnosedDataParameter>
<isSupportSimpleDevStatus>
en

<!--ro, opt, bool, whether the device supports getting the device's simple status, desc:related URI: /ISAPI/System/workingstatus?format=json-->true
</isSupportSimpleDevStatus>
<isSupportFlexible>
im

<!--ro, opt, bool, whether the device supports the flexible combination configuration. Related URI: /ISAPI/System/Video/inputs/channels?format=json--
>true
ng

</isSupportFlexible>
Aj

<isSupportPTZChannels>
<!--ro, opt, bool, whether the device supports returning the PTZ channel (it is distinguished from the video channel)-->true
Co

</isSupportPTZChannels>
<isSupportMetadata>
<!--ro, opt, bool, whether the device supports metadata, desc:related URI: /ISAPI/Streaming/channels/<ID>/metadata/capabilities-->true
</isSupportMetadata>
<isSupportTimeCap>
<!--ro, opt, bool, whether the device supports the time configuration, desc:related URI: /ISAPI/System/time/capabilities-->true
</isSupportTimeCap>
<isSupportThermalStreamData>
<!--ro, opt, bool, whether the device supports uploading thermal imaging stream data in real time-->true
</isSupportThermalStreamData>
<isSupportShutdown>
<!--ro, opt, bool, whether the device supports the shutdown configuration, desc:related URI: /ISAPI/System/shutdown?format=json-->true
</isSupportShutdown>
<isSupportConsumptionMode>
<!--ro, opt, bool, whether the device supports switching the consumption mode, desc:related URI: /ISAPI/System/consumptionMode/capabilities?
format=json-->true
</isSupportConsumptionMode>
<isSupportManualPowerConsumption>
<!--ro, opt, bool, whether the device supports controlling the device consumption manually-->true
</isSupportManualPowerConsumption>
<isSupportPostUpdateFirmware>
<!--ro, opt, bool, whether the device supports upgrading firmware by POST method-->true
</isSupportPostUpdateFirmware>
</isSupportPostUpdateFirmware>
<isSupportPostConfigData>
<!--ro, opt, bool, whether the device supports importing and exporting the configuration file by POST method-->true
</isSupportPostConfigData>
<isSupportUserLock>
<!--ro, opt, bool, whether the device supports locking the user, desc:related URI: /ISAPI/System/userLock/config/capabilities?format=json-->true
</isSupportUserLock>
<isSupportModuleLock>
<!--ro, opt, bool, whether the device supports locking the module, desc:related URI: /ISAPI/System/moduleLock-->true
</isSupportModuleLock>
<supportSmartOverlapChannles opt="1">
<!--ro, opt, bool, whether the device supports configuring the smart event stream, attr:opt{opt, string}, desc:If this function is supported, this
node and the corresponding channel ID will be returned; otherwise, this node will not be returned-->true
</supportSmartOverlapChannles>
<isSupportNetworkCapture>
<!--ro, opt, bool, whether the device supports capturing network packets, desc:this node is used to determine whether the device supports capturing
communication packets transmitted between the device and the external. Related URI: /ISAPI/System/networkCapture/capabilities?format=json-->true

m
</isSupportNetworkCapture>

co
<isSupportOperationRecord>
<!--ro, opt, bool, whether the device supports the device operation records, desc:the charging voltage and monthly flow can be recorded in the device
in real-time low-consumption mode and full-consumption mode. Related URI: /ISAPI/System/operationRecord/capabilities?format=json-->true

a.
</isSupportOperationRecord>
<isSupportSearchModuleLock>

C. arc
<!--ro, opt, bool, whether the device support search module locking parameters, desc:/ISAPI/System/moduleLock/searchconfig?format=json-->true
</isSupportSearchModuleLock>
</SysCap>
<voicetalkNums>
<!--ro, opt, int, number of two-way audio channels-->2

s, em
</voicetalkNums>

A
<isSupportSnapshot>

no fr
<!--ro, opt, bool, whether the device supports capturing pictures-->true
</isSupportSnapshot>
<SecurityCap>

ri on
<!--ro, opt, object, encryption capability set-->
<supportUserNums>
<!--ro, opt, int, supported maximum number of users-->1

Ma oc
</supportUserNums>
<userBondIpNums>
up
<!--ro, opt, int, supported maximum number of IP addresses that can be bound-->1
</userBondIpNums>
<userBondMacNums>
co gr

<!--ro, opt, int, supported maximum number of MAC addresses that can be bound-->1
</userBondMacNums>
<isSupCertificate>
es a@

<!--ro, opt, bool, whether the device supports authentication-->true


</isSupCertificate>
Fr rc

<issupIllegalLoginLock>
s

<!--ro, opt, bool, whether the device supports locking login-->true


</issupIllegalLoginLock>
y ema

<isSupportOnlineUser>
<!--ro, opt, bool, whether the device supports the online user configuration-->true
</isSupportOnlineUser>
<isSupportAnonymous>
os fr

<!--ro, opt, bool, whether the device supports anonymous login-->true


</isSupportAnonymous>
<isSupportStreamEncryption>
ad on

<!--ro, opt, bool, whether the device supports stream encryption-->true


</isSupportStreamEncryption>
el .c

<securityVersion opt="1,2,3,4,7">
<!--ro, opt, string, encryption capability, attr:opt{opt, string}, desc:the encryption capability of each version consists of two parts: encryption
algorithm and the range of encrypted nodes. Currently 1 refers to AES128 encryption and 2 refers to AES256 encryption. The range of encrypted nodes is
ez

described in each protocol-->test


</securityVersion>
<keyIterateNum>
en

<!--ro, opt, int, iteration times, desc:the value is usually between 100 and 1000-->100
</keyIterateNum>
<isSupportUserCheck>
im

<!--ro, opt, bool, whether the device supports verifying the login password when editing (editing/adding/deleting) user parameters, desc:this node
ng

depends on the node <securityVersion>, which means that it is only valid for the versions that support encrypting the sensitive information-->true
Aj

</isSupportUserCheck>
<isSupportGUIDFileDataExport>
Co

<!--ro, opt, bool, whether the device supports exporting the device's GUID file-->true
</isSupportGUIDFileDataExport>
<isSupportSecurityQuestionConfig>
<!--ro, opt, bool, whether the device supports answering security questions-->true
</isSupportSecurityQuestionConfig>
<supportSecurityNode opt="wirelessServer,wirelessDial">
<!--ro, opt, string, additional node for supporting sensitive information encryption, attr:opt{opt, string}, desc:in the earlier version of the
solution for encrypting the sensitive information via ISAPI (i.e., the solution for transmitting plaintext via ISAPI), some URIs containing sensitive
information are left out. Now these URIs need to be encrypted for transmission. This capability node is added to be compatible with old devices-->test
</supportSecurityNode>
<isSupportGetOnlineUserListSC>
<!--ro, opt, bool, whether the device supports searching the online user list-->true
</isSupportGetOnlineUserListSC>
<SecurityLimits>
<!--ro, opt, object, capability of configuring security limit parameters-->
<LoginPasswordLenLimit min="1" max="16">
<!--ro, opt, string, length limit of the user's login password, attr:min{opt, string},max{opt, string}-->test
</LoginPasswordLenLimit>
<SecurityAnswerLenLimit min="1" max="128">
<!--ro, opt, string, length limit of the security question's answer, attr:min{opt, string},max{opt, string}-->test
</SecurityAnswerLenLimit>
</SecurityLimits>
<RSAKeyLength opt="512,1024,2048" def="2048">
<!--ro, opt, enum, HTTPS certificate length, subType:string, attr:opt{opt, string},def{opt, string}, desc:512, 1024, 2048-->2048
<!--ro, opt, enum, HTTPS certificate length, subType:string, attr:opt{opt, string},def{opt, string}, desc:512, 1024, 2048-->2048
</RSAKeyLength>
<isSupportONVIFUserManagement>
<!--ro, opt, bool, whether the device supports ONVIF user management-->true
</isSupportONVIFUserManagement>
<WebCertificateCap>
<!--ro, opt, object, HTTP authentication capability-->
<CertificateType opt="basic,digest,digest/basic">
<!--ro, req, string, certificate type: basic (authentication), attr:opt{opt, string}-->test
</CertificateType>
<SecurityAlgorithm>
<!--ro, opt, object, encryption algorithm, dep:or,{$.DeviceCap.SecurityCap.WebCertificateCap.CertificateType,eq,degist},
{$.DeviceCap.SecurityCap.WebCertificateCap.CertificateType,eq,digest/basic}-->
<algorithmType opt="MD5,SHA256,MD5/SHA256">
<!--ro, opt, string, algorithm type, attr:opt{req, string}-->test
</algorithmType>

m
</SecurityAlgorithm>
</WebCertificateCap>

co
<isSupportConfigFileImport>
<!--ro, opt, bool, whether the device supports importing the configuration file-->true

a.
</isSupportConfigFileImport>
<isSupportConfigFileExport>
<!--ro, opt, bool, whether the device supports exporting the configuration file-->true

C. arc
</isSupportConfigFileExport>
<cfgFileSecretKeyLenLimit min="0" max="16">
<!--ro, opt, string, length limit of the configuration file's verification key, attr:min{opt, string},max{opt, string}-->0
</cfgFileSecretKeyLenLimit>

s, em
<supportIPCActivatePassword>
<!--ro, opt, bool, whether the device supports configuring the password for activating the network camera-->true

A
</supportIPCActivatePassword>

no fr
<isIrreversible>
<!--ro, opt, bool, whether the device supports irreversible password storage, desc:if this function is not supported, the plaintext password of the

ri on
user information will be stored in the device; otherwise, the password will be hashed for storage in the device-->true
</isIrreversible>
<salt>

Ma oc
<!--ro, opt, string, the specific salt used by the user to log in-->test
</salt>
<isSupportOnvifInfo>
up
<!--ro, opt, bool, whether the device supports getting the ONVIF protocol information-->true
</isSupportOnvifInfo>
co gr

<isSupportUserNamePasswordCheckUpgrade>
<!--ro, opt, bool, whether the device supports upgrading the verification of the user name and password-->true
</isSupportUserNamePasswordCheckUpgrade>
es a@

<isSupportDeviceCertificatesManagement>
<!--ro, opt, bool, whether the device supports certificate management-->true
</isSupportDeviceCertificatesManagement>
Fr rc

<isSupportSIPCertificatesManagement>
<!--ro, opt, bool, whether the device supports SIP certificate management-->true
y ema

</isSupportSIPCertificatesManagement>
<isSupportDeviceSelfSignCertExport>
<!--ro, opt, bool, whether the device supports exporting the self-signed certificate-->true
</isSupportDeviceSelfSignCertExport>
<isSupportSecurityEmail>
os fr

<!--ro, opt, bool, whether the device supports configuring the security email-->true
</isSupportSecurityEmail>
ad on

<isSupportRTSPCertificate opt="true,false">
<!--ro, opt, bool, whether the device supports RTSP authentication, attr:opt{opt, string}-->true
</isSupportRTSPCertificate>
el .c

<isSupportPictureURlCertificate opt="true,false">
<!--ro, opt, bool, whether the device supports configuring parameters for picture URL authentication, attr:opt{opt, string}-->true
</isSupportPictureURlCertificate>
ez

<isSupportGB35114Certificate>
<!--ro, opt, bool, N/A-->true
en

</isSupportGB35114Certificate>
<isSupportAuthenticationMode opt="uKey,private">
<!--ro, opt, enum, verification mode, subType:string, attr:opt{req, string}, desc:"uKey", "private"-->private
im

</isSupportAuthenticationMode>
<isSupportUnloggedUserPermissionConfig opt="true,false">
ng

<!--ro, opt, bool, whether the device supports configuring permission for users that have not logged in, attr:opt{opt, string}-->true
Aj

</isSupportUnloggedUserPermissionConfig>
Co

<maxIllegalLoginTimes min="3" max="20" def="5">


<!--ro, opt, string, maximum failed illegal login attempts, attr:min{opt, string},max{opt, string},def{opt, string}, desc:This node is valid when the
value of the node <issupportIllegalLoginLock> is true and will be returned when the maximum failed attempts of illegally logging in to the device reach the
limit.-->1
</maxIllegalLoginTimes>
<SecurityAdvanced>
<!--ro, opt, object, advanced security configuration-->
<securityEnhanced>
<!--ro, opt, bool, whether the device supports security reinforcement-->true
</securityEnhanced>
<noOperationEnabled>
<!--ro, req, bool, whether to enable the control timeout when there is no operation-->true
</noOperationEnabled>
<noOperationTime min="1" max="60" def="15">
<!--ro, req, int, control timeout when there is no operation, unit:分钟, attr:min{opt, string},max{opt, string},def{opt, string}-->1
</noOperationTime>
<isSupportDigestStatus>
<!--ro, opt, bool, digest status-->true
</isSupportDigestStatus>
</SecurityAdvanced>
<LoginLinkNum>
<!--ro, opt, object, number of users logging in at the same time-->
<maxLinkNum min="1" max="128" def="50">
<!--ro, req, int, number of controls logging in at the same time, attr:min{opt, string},max{opt, string},def{opt, string}-->64
<!--ro, req, int, number of controls logging in at the same time, attr:min{opt, string},max{opt, string},def{opt, string}-->64
</maxLinkNum>
</LoginLinkNum>
<isSupportCCClientCertificate>
<!--ro, opt, bool, whether the device supports the CC (Client Certificate) function-->true
</isSupportCCClientCertificate>
<passwordValidity min="0" max="365">
<!--ro, opt, string, range of the password validity period, attr:min{opt, string},max{opt, string}, desc:Unit: day. If this node is returned, it
indicates that the device supports configuring the password validity period, and only the administrator can edit the configuration.-->1
</passwordValidity>
<isSupportResetChannelPassword>
<!--ro, opt, bool, whether the device supports resetting the password of the channel-->true
</isSupportResetChannelPassword>
<DoubleVerificationCap>
<!--ro, opt, object, secondary authentication capability-->
<isSupportUsersConfig>
<!--ro, opt, bool, whether the device supports configuring users for secondary authentication-->true

m
</isSupportUsersConfig>

co
<isSupportUsersPermissionConfig>
<!--ro, opt, bool, whether the device supports configuring user permission for secondary authentication-->true
</isSupportUsersPermissionConfig>

a.
<isSupportFactoryReset>
<!--ro, opt, bool, whether the device supports restoring secondary authentication to defaults-->true

C. arc
</isSupportFactoryReset>
</DoubleVerificationCap>
<isSupportUserSearch>
<!--ro, opt, bool, whether the device supports searching users-->true

s, em
</isSupportUserSearch>
<keypadPassword min="1" max="10">

A
<!--ro, opt, int, keypad password length, attr:min{req, int},max{req, int}, desc:When the password length of different user types is different, this

no fr
node only indicates the keypad password length of the administrator; otherwise, the keypad password length of all user types is the same and defined by the
value of this node.-->1
</keypadPassword>

ri on
<installerKeypadPassword min="1" max="10">
<!--ro, opt, int, keypad password length of the installer, attr:min{req, int},max{req, int}-->1

Ma oc
</installerKeypadPassword>
<operatorKeypadPassword min="1" max="10">
<!--ro, opt, int, keypad password length of the operator, attr:min{req, int},max{req, int}-->1
up
</operatorKeypadPassword>
<userOperateType opt="1,2,3">
<!--ro, opt, enum, user type: 1 (network user), subType:int, attr:opt{req, string}, desc:1 (network user), 2 (keypad user), 3 (network user and keypad
co gr

user)-->1
</userOperateType>
<isSptUserEnabled>
es a@

<!--ro, opt, bool, whether the device supports configuring parameters for enabling the user-->true
</isSptUserEnabled>
Fr rc

<isSptAdminCap>
s

<!--ro, opt, bool, whether the device supports getting the admin permission-->true
</isSptAdminCap>
y ema

<isSupportBackLogCfg>
<!--ro, opt, bool, whether the device supports configuring basic parameters of the background log-->true
</isSupportBackLogCfg>
<isSupportBackLogExport>
os fr

<!--ro, opt, bool, whether the device supports exporting the background log-->true
</isSupportBackLogExport>
<isSupportModifyInnerPassword opt="true,false">
ad on

<!--ro, opt, bool, whether the device supports editing the built-in password, attr:opt{req, string}, desc:the device's built-in passwords include the
database password, system account password and so on-->true
el .c

</isSupportModifyInnerPassword>
<isSupportEncryptCertificate>
<!--ro, opt, bool, whether the device supports certificate encryption, desc:/ISAPI/Security/deviceCertificate-->true
ez

</isSupportEncryptCertificate>
<maxIllegalLoginLockTime min="1" max="120" def="30.00">
<!--ro, opt, int, lock time range, range:[1,120], unit:min, attr:min{req, int},max{req, int},def{req, int}-->1
en

</maxIllegalLoginLockTime>
<cloudSensitiveInfoEncryptType>
im

<!--ro, opt, string, encryption type of the cloud sensitive information, desc:the current device returns the value "2.1", which means that the method
of generating the key for encrypting the sensitive information is SHA256(calc_sha256(user, salt, SHA256(user+salt2+SHA256(user+salt+password)))+
ng

AaBbCcDd1234!@#$).-->2.1
Aj

</cloudSensitiveInfoEncryptType>
<isSupportCertificateCustomID>
Co

<!--ro, opt, bool, whether the device supports using the user's custom ID to configure the certificate-->true
</isSupportCertificateCustomID>
<isSupportResetLANPassword>
<!--ro, opt, bool, whether the device supports resetting the device's password in the LAN, desc:related URI:
/ISAPI/Security/resetPassword/certification?format=json-->true
</isSupportResetLANPassword>
<isSupportPicHttpsCertificatesManagement>
<!--ro, opt, bool, whether the device supports managing the HTTPS certificate for pictures, desc:if this function is supported, this node will be
returned and its value is true; otherwise, this node will not be returned-->true
</isSupportPicHttpsCertificatesManagement>
<isSupportAKSKImport>
<!--ro, opt, bool, whether the device supports importing AKSK, desc:if this function is supported, this node will be returned and its value is true;
otherwise, this node will not be returned-->true
</isSupportAKSKImport>
<isSupportAKSKExport>
<!--ro, opt, bool, whether the device supports exporting AKSK, desc:If this function is supported, this node will be returned and its value is true;
otherwise, this node will not be returned.-->true
</isSupportAKSKExport>
<isSupportAKSKReset>
<!--ro, opt, bool, whether the device supports resetting AKSK, desc:If this function is supported, this node will be returned and its value is true;
otherwise, this node will not be returned.-->true
</isSupportAKSKReset>
<ExportCertificateFile>
<!--ro, opt, object, whether the device supports exporting the certificate, desc:related URI: POST
/ISAPI/Security/serverCertificate/exportCertificateFile-->
</ExportCertificateFile>
<isSupportGB351114FDWSFCertificate>
<!--ro, opt, bool, whether the device supports FDWSF certificate management, desc:if this function is supported, this node will be returned and its
value is true; otherwise, this node will not be returned. Related URIs: /ISAPI/Security/GB351114/FDWSFCertificate/capabilities?format=json, POST
/ISAPI/Security/GB351114/FDWSFCertificate?format=json, GET /ISAPI/Security/GB351114/FDWSFCertificate?format=json, and DELETE
/ISAPI/Security/GB351114/FDWSFCertificate?format=json.-->true
</isSupportGB351114FDWSFCertificate>
<isSupportMediaObjectEncryption>
<!--ro, opt, bool, whether the device supports setting encryption parameters of the private target in media data for the specified video channel,
desc:if this function is supported, this node will be returned and its value is true; otherwise, this node will not be returned. Related URI:
/ISAPI/Security/MediaObjectEncryption/capabilities?format=json-->true
</isSupportMediaObjectEncryption>
<isSupportDisclaimer>
<!--ro, opt, bool, whether support configuring the product disclaimer, desc:if this function is supported, this node will be returned and its value is

m
true; otherwise, this node will not be returned. Related URI: /ISAPI/Security/disclaimer/capabilities?format=json-->true

co
</isSupportDisclaimer>
<isSupportSoftwareLicense>
<!--ro, opt, bool, whether support configuring the product open source statement, desc:if this function is supported, this node will be returned and

a.
its value is true; otherwise, this node will not be returned. Related URI: /ISAPI/Security/softwareLicense?format=json-->true
</isSupportSoftwareLicense>
<isSupportInstallerCap>

C. arc
<!--ro, opt, bool, whether the device supports getting the installer permission, desc:if this function is supported, this node will be returned and
its value is true; otherwise, this node will not be returned. Related URI: /ISAPI/Security/UserPermission/installer/capabilities?format=json-->true
</isSupportInstallerCap>
<isSupportResetPasswordFile>

s, em
<!--ro, opt, bool, whether the device supports exporting and importing the secret key file of device in the LAN, desc:Related URI:
/ISAPI/Security/resetPassword/keyFile/capabilities?format=json-->true

A
no fr
</isSupportResetPasswordFile>
<isNotSupportLogSeverCertificate>
<!--ro, opt, bool, whether the device support importing log server certificate, desc:related URI: /ISAPI/Security/serverCertificate/certificate-->true

ri on
</isNotSupportLogSeverCertificate>
<isSupportLocalLoginCfg>
<!--ro, opt, bool, whether it supports the capability of device local login parameters, desc:GET/PUT /ISAPI/Security/LocalLoginCfg?format=json-->true

Ma oc
</isSupportLocalLoginCfg>
<isSupportGetProtocolFirewallRulesFileImportStatus>
<!--ro, opt, bool, N/A, desc:GET /ISAPI/Security/GetProtocolFirewallRulesFileImportStatus?format=json-->true
up
</isSupportGetProtocolFirewallRulesFileImportStatus>
<isSupportImportProtocolFirewallRulesFile>
co gr

<!--ro, opt, bool, N/A, desc:PUT /ISAPI/Security/ImportProtocolFirewallRulesFile?format=json-->true


</isSupportImportProtocolFirewallRulesFile>
<isSupportGetProtocolFirewallEngineUpgradeStatus>
es a@

<!--ro, opt, bool, N/A, desc:GET /ISAPI/Security/GetProtocolFirewallEngineUpgradeStatus?format=json-->true


</isSupportGetProtocolFirewallEngineUpgradeStatus>
<isSupportUpgradeProtocolFirewallEngine>
Fr rc

<!--ro, opt, bool, N/A, desc:PUT /ISAPI/Security/UpgradeProtocolFirewallEngine?format=json-->true


</isSupportUpgradeProtocolFirewallEngine>
y ema

<isSupportProtocolFirewallVersionInfo>
<!--ro, opt, bool, N/A, desc:GET /ISAPI/Security/ProtocolFirewallVersionInfo?format=json-->true
</isSupportProtocolFirewallVersionInfo>
<isSupportProtocolFirewallParams>
os fr

<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/Security/ProtocolFirewallParams?format=json-->true


</isSupportProtocolFirewallParams>
<isSupportResetPasswordBySecurityPhoneNo>
ad on

<!--ro, opt, bool, whether it supports resetting device password with phone number verification,
desc:1. attendance check devices support applying a preset phone number during device activation. The user can reset the device password with the preset
phone number, which is similar with password reset via email. The phone number can be changed on the website or local UI of the device
el .c

2. if the node is not returned or the returned value is false, it indicates "no"-->true
</isSupportResetPasswordBySecurityPhoneNo>
ez

<isSupportGetIntrusionPreventionEngineUpgradeStatus>
<!--ro, opt, bool, whether the device supports getting the upgrade status of intrusion prevention engine library, desc:GET
/ISAPI/Security/GetIntrusionPreventionEngineUpgradeStatus?format=json-->true
en

</isSupportGetIntrusionPreventionEngineUpgradeStatus>
<isSupportIntrusionPreventionEngineVersionInfo>
<!--ro, opt, bool, whether the device supports version information of intrusion prevention engine, desc:GET
im

/ISAPI/Security/IntrusionPreventionEngineVersionInfo?format=json-->true
</isSupportIntrusionPreventionEngineVersionInfo>
ng

<isSupportIntrusionPreventionParams>
Aj

<!--ro, opt, bool, whether the device supports intrusion prevention parameters, desc:GET/PUT /ISAPI/Security/IntrusionPreventionParams?format=json--
Co

>true
</isSupportIntrusionPreventionParams>
<isSupportUpgradeIntrusionPreventionEngine>
<!--ro, opt, bool, whether the device supports upgrading intrusion prevention engine library, desc:PUT
/ISAPI/Security/UpgradeIntrusionPreventionEngine?format=json-->true
</isSupportUpgradeIntrusionPreventionEngine>
<notSupportImportCertificateType opt="CA,CCClentCertificate,GB35114,GB35114Service">
<!--ro, opt, string, file type that cannot be imported, attr:opt{req, string}, desc:if this node does not exist, all supported certificate types can
be imported-->test
</notSupportImportCertificateType>
<isSupportPasswordProtection>
<!--ro, opt, bool-->true
</isSupportPasswordProtection>
</SecurityCap>
<EventCap>
<!--ro, opt, object, event capability-->
<isSupportHDFull>
<!--ro, opt, bool, whether the device supports HDD full alarm-->true
</isSupportHDFull>
<isSupportHDError>
<!--ro, opt, bool, whether the device supports HDD error alarm-->true
</isSupportHDError>
<isSupportNicBroken>
<!--ro, opt, bool, whether the device supports the network disconnected event-->true
<!--ro, opt, bool, whether the device supports the network disconnected event-->true
</isSupportNicBroken>
<isSupportIpConflict>
<!--ro, opt, bool, whether the device supports the IP address conflict event-->true
</isSupportIpConflict>
<isSupportIllAccess>
<!--ro, opt, bool, whether the device supports the illegal login event-->true
</isSupportIllAccess>
<isSupportViException>
<!--ro, opt, bool, whether the device supports video input exception (only for analog channels)-->true
</isSupportViException>
<isSupportViMismatch>
<!--ro, opt, bool, whether the device supports the event of video standard mismatch-->true
</isSupportViMismatch>
<isSupportRecordException>
<!--ro, opt, bool, whether the device supports the recording exception event-->true

m
</isSupportRecordException>
<isSupportRaidException>

co
<!--ro, opt, bool, whether the device supports the array exception event-->true
</isSupportRaidException>
<isSupportViResMismatch>

a.
<!--ro, opt, bool, whether the device supports the event of video resolution mismatch-->true
</isSupportViResMismatch>

C. arc
<isSupportPOCException>
<!--ro, opt, bool, whether the device supports the event of powering over coaxial exception-->true
</isSupportPOCException>
<isSupportSmartDetection>

s, em
<!--ro, opt, bool, whether the device supports the Smart event-->true
</isSupportSmartDetection>

A
<isSupportSpareException>

no fr
<!--ro, opt, bool, whether the device supports hot spare exception-->true
</isSupportSpareException>
<isSupportPoePowerException>

ri on
<!--ro, opt, bool, whether the device supports the POE exception event-->true
</isSupportPoePowerException>

Ma oc
<isSupportTriggerFocus>
<!--ro, opt, bool, whether the device supports defocus exception-->true
</isSupportTriggerFocus>
up
<isSupportMotionDetection>
<!--ro, opt, bool, whether the device supports motion detection-->true
</isSupportMotionDetection>
co gr

<isSupportVideoLoss>
<!--ro, opt, bool, whether the device supports video loss events-->true
es a@

</isSupportVideoLoss>
<isSupportTamperDetection>
<!--ro, opt, bool, whether the device supports tampering detection-->true
Fr rc

</isSupportTamperDetection>
<isSupportFireDetection>
<!--ro, opt, bool, whether the device supports fire detection events-->true
y ema

</isSupportFireDetection>
<isSupportRegionEntrance>
<!--ro, opt, bool, whether the device supports region entrance events-->true
</isSupportRegionEntrance>
os fr

<isSupportRegionExiting>
<!--ro, opt, bool, whether the device supports region exiting events-->true
</isSupportRegionExiting>
ad on

<isSupportLoitering>
<!--ro, opt, bool, whether the device supports loitering events-->true
el .c

</isSupportLoitering>
<isSupportGroup>
<!--ro, opt, bool, whether the device supports people gathering events-->true
ez

</isSupportGroup>
<isSupportRapidMove>
<!--ro, opt, bool, whether the device supports fast moving events-->true
en

</isSupportRapidMove>
<isSupportParking>
im

<!--ro, opt, bool, whether the device supports parking detection events-->true
</isSupportParking>
ng

<isSupportUnattendedBaggage>
Aj

<!--ro, opt, bool, whether the device supports unattended baggage events-->true
</isSupportUnattendedBaggage>
Co

<isSupportAttendedBaggage>
<!--ro, opt, bool, whether the device supports object removal events-->true
</isSupportAttendedBaggage>
<isSupportHumanAttribute>
<!--ro, opt, bool, whether the device supports human body features-->true
</isSupportHumanAttribute>
<isSupportHumanRecognition>
<!--ro, opt, bool, whether the device supports target capture events-->true
</isSupportHumanRecognition>
<isSupportFaceContrast>
<!--ro, opt, bool, whether the device supports face picture comparison events-->true
</isSupportFaceContrast>
<isSupportFaceLib>
<!--ro, opt, bool, Front-end devices support linkage by face picture library., desc:related URI: /ISAPI/Event/schedules/faceLib/<ID>/<FDID>-->true
</isSupportFaceLib>
<isSupportBlackListFaceContrast>
<!--ro, opt, bool, whether the device supports events of blocklist face picture comparison-->true
</isSupportBlackListFaceContrast>
<isSupportWhiteListFaceContrast>
<!--ro, opt, bool, whether the device supports events of allowlist face picture comparison-->true
</isSupportWhiteListFaceContrast>
<isSupportillegalParking>
<!--ro, opt, bool, whether the device supports illegal parking detection-->true
</isSupportillegalParking>
<isSupportPedestrian>
<!--ro, opt, bool, whether the device supports pedestrian detection-->true
</isSupportPedestrian>
<isSupportTrafficAccident>
<!--ro, opt, bool, whether the device supports traffic incident detection-->true
</isSupportTrafficAccident>
<isSupportConstruction>
<!--ro, opt, bool, whether the device supports construction detection-->true
</isSupportConstruction>
<isSupportRoadBlock>
<!--ro, opt, bool, whether the device supports roadblock detection-->true
</isSupportRoadBlock>
<isSupportAbandonedObject>
<!--ro, opt, bool, whether the device supports fallen object detection-->true
</isSupportAbandonedObject>

m
<isSupportParallelParking>

co
<!--ro, opt, bool, whether the device supports parallel parking detection-->true
</isSupportParallelParking>
<isSupportParkingState>

a.
<!--ro, opt, bool, whether the device supports parking space status detection-->true
</isSupportParkingState>
<isSupportTrafficJam>

C. arc
<!--ro, opt, bool, whether the device supports traffic jam detection (old version)-->true
</isSupportTrafficJam>
<isSupportCongestion>
<!--ro, opt, bool, whether the device supports traffic jam detection-->true

s, em
</isSupportCongestion>

A
<isSupportStudentsStoodUp>

no fr
<!--ro, opt, bool, whether the device supports the student standing up detection event-->true
</isSupportStudentsStoodUp>
<isSupportFramesPeopleCounting>

ri on
<!--ro, opt, bool, whether the device supports the regional people counting event-->true
</isSupportFramesPeopleCounting>
<isSupportFaceSnap>

Ma oc
<!--ro, opt, bool, whether the device supports face capture events-->true
</isSupportFaceSnap>
up
<isSupportPersonDensityDetection>
<!--ro, opt, bool, whether the device supports people density detection-->true
</isSupportPersonDensityDetection>
co gr

<HFPD>
<!--ro, opt, bool, whether the device supports frequently appeared person detection-->true
</HFPD>
es a@

<isSupportPersonQueueDetection>
<!--ro, opt, bool, whether the device supports queue detection events-->true
</isSupportPersonQueueDetection>
Fr rc

<isSupportVehicleStatistics>
<!--ro, opt, bool, whether the device supports vehicle statistics events-->true
y ema

</isSupportVehicleStatistics>
<isSupportFaceThermometry>
<!--ro, opt, bool, whether the device supports face temperature screening-->true
</isSupportFaceThermometry>
os fr

<isSupportSafetyHelmetDetection>
<!--ro, opt, bool, whether the device supports hard hat detection-->true
</isSupportSafetyHelmetDetection>
ad on

<isSupportPowerSupplyCabinet>
<!--ro, opt, bool, whether the device supports cabinet powering detection-->true
</isSupportPowerSupplyCabinet>
el .c

<isSupportSensorDetection>
<!--ro, opt, bool, whether the device supports sensor detection-->true
ez

</isSupportSensorDetection>
<isSupportSignAbnormal>
<!--ro, opt, bool, whether the device supports the physical sign exception detection-->true
en

</isSupportSignAbnormal>
<isSupportTeacherBehaviorDetect>
<!--ro, opt, bool, whether the device supports teacher's behavior detection-->true
im

</isSupportTeacherBehaviorDetect>
ng

<isSupportCityManagement>
Aj

<!--ro, opt, bool, whether the device supports the city management function-->true
</isSupportCityManagement>
Co

<isSupportMixedTargetDetection>
<!--ro, opt, bool, whether the device supports multi-target-type detection events-->true
</isSupportMixedTargetDetection>
<isSupportFaceSnapModeling>
<!--ro, opt, bool, whether the device supports face modeling events-->true
</isSupportFaceSnapModeling>
<isSupportIntersectionAnalysis>
<!--ro, opt, bool, whether the device supports the intersection analysis-->true
</isSupportIntersectionAnalysis>
<isSupportTriggerCapCheck>
<!--ro, opt, bool, whether the device supports verifying the capability of triggering linkage actions, desc:this node indicates that the capability
message returned by calling the URI GET /ISAPI/Event/triggersCap has been verified, and the event linkage actions can be displayed exactly according to the
capability-->true
</isSupportTriggerCapCheck>
<isSupportLuma>
<!--ro, opt, bool, VQD brightness exception-->true
</isSupportLuma>
<isSupportChroma>
<!--ro, opt, bool, VQD image color cast-->true
</isSupportChroma>
<isSupportSnow>
<!--ro, opt, bool, VQD snow noise-->true
</isSupportSnow>
<isSupportStreak>
<isSupportStreak>
<!--ro, opt, bool, VQD stripe noise-->true
</isSupportStreak>
<isSupportFreeze>
<!--ro, opt, bool, VQD image freeze-->true
</isSupportFreeze>
<isSupportSigLose>
<!--ro, opt, bool, VQD signal loss-->true
</isSupportSigLose>
<isSupportClarity>
<!--ro, opt, bool, VQD resolution exception-->true
</isSupportClarity>
<isSupportJitter>
<!--ro, opt, bool, VQD image flutter-->true
</isSupportJitter>
<isSupportBlock>

m
<!--ro, opt, bool, VQD video tampering-->true
</isSupportBlock>

co
<isSupportFlowers>
<!--ro, opt, bool, VQD blurred image alarm-->true

a.
</isSupportFlowers>
<isSupportNoise>
<!--ro, opt, bool, VQD blurred screen-->true

C. arc
</isSupportNoise>
<isSupportGhost>
<!--ro, opt, bool, VQD image noise-->true
</isSupportGhost>

s, em
<isSupportPurple>
<!--ro, opt, bool, VQD purple fringing-->true

A
</isSupportPurple>

no fr
<isSupportICR>
<!--ro, opt, bool, VQD ICP-->true

ri on
</isSupportICR>
<isSupportProtectiveFilm>
<!--ro, opt, bool, VQD protective film unremoved-->true

Ma oc
</isSupportProtectiveFilm>
<isSupportVoltageInstable>
<!--ro, opt, bool, whether the device supports the voltage instable exception detection-->true
up
</isSupportVoltageInstable>
<isSupportCertificateRevocation>
<!--ro, opt, bool, whether the device supports the certificate expiry alarm-->true
co gr

</isSupportCertificateRevocation>
<isSupportSysStorFull>
es a@

<!--ro, opt, bool, whether the device supports the storage full alarm of the cluster system-->true
</isSupportSysStorFull>
<isSupportVersionAbnormal>
Fr rc

<!--ro, opt, bool, whether the device supports cluster version exception-->true
</isSupportVersionAbnormal>
<isSupportNodeOffline>
y ema

<!--ro, opt, bool, whether the device supports device offline detection-->true
</isSupportNodeOffline>
<isSupportRecordCycleAbnormal>
<!--ro, opt, bool, whether the device supports the event of insufficient recording period-->true
os fr

</isSupportRecordCycleAbnormal>
<isSupportIpcTransferAbnormal>
ad on

<!--ro, opt, bool, whether the device supports the event of network camera migration failure-->true
</isSupportIpcTransferAbnormal>
<isSupportDrivingBehaviorDetect>
el .c

<!--ro, opt, bool, whether the device supports driving behavior detection-->true
</isSupportDrivingBehaviorDetect>
<isSupportWasteGasDetection>
ez

<!--ro, opt, bool, whether the device supports waste gas monitoring-->true
</isSupportWasteGasDetection>
en

<isSupportGreyScaleAlarm>
<!--ro, opt, bool, whether the device supports the gray scale alarm-->true
</isSupportGreyScaleAlarm>
im

<isSupportPTLocking>
<!--ro, opt, bool, whether the device supports the PT locking event-->true
ng

</isSupportPTLocking>
Aj

<isSupportNoMaskDetection>
<!--ro, opt, bool, whether the device supports not wearing mask detection-->true
Co

</isSupportNoMaskDetection>
<isSupportTMPA>
<!--ro, opt, bool, whether the device supports the warning linkage of face temperature screening-->true
</isSupportTMPA>
<RuleScheduleCap>
<!--ro, opt, object, capability of configuring the arming schedule by rule-->
<isSupportCityManagement>
<!--ro, opt, bool, whether the device supports configuring the arming schedule by rule for the city management event-->true
</isSupportCityManagement>
</RuleScheduleCap>
<RegionScheduleCap>
<!--ro, opt, object, capability of configuring the arming schedule by area-->
<isSupportPersonDensityDetection>
<!--ro, opt, bool, whether the device supports configuring the arming schedule by area for the people density detection-->true
</isSupportPersonDensityDetection>
<isSupportPersonQueueDetection>
<!--ro, opt, bool, whether the device supports configuring the arming schedule by area for the queue detection (area popularity analytics)-->true
</isSupportPersonQueueDetection>
</RegionScheduleCap>
<isSupportThermalCalibrationFileException>
<!--ro, opt, bool, whether the device supports the temperature calibration file exception-->true
</isSupportThermalCalibrationFileException>
<isSupportTemperatureIntervalMeasurement>
<isSupportTemperatureIntervalMeasurement>
<!--ro, opt, bool, whether the device supports the temperature range detection-->true
</isSupportTemperatureIntervalMeasurement>
<isSupportThermalVehicleDetection>
<!--ro, opt, bool, whether the device supports thermal imaging vehicle detection-->true
</isSupportThermalVehicleDetection>
<isSupportWaterQualityDetection>
<!--ro, opt, bool, whether the device supports water quality detection-->true
</isSupportWaterQualityDetection>
<isSupportWaterLevelDetection>
<!--ro, opt, bool, whether the device supports water level detection-->true
</isSupportWaterLevelDetection>
<isSupportDeviceTemperatureAbnormal>
<!--ro, opt, bool, whether the device supports temperature exception detection-->true
</isSupportDeviceTemperatureAbnormal>
<isSupportObjectAccumulationDetection>
<!--ro, opt, bool, whether the device supports object accumulation detection-->true

m
</isSupportObjectAccumulationDetection>

co
<isSupportAppAbnormal>
<!--ro, opt, bool, whether the device supports the App exception alarm or event-->true
</isSupportAppAbnormal>

a.
<isSupportLensTemperatureException>
<!--ro, opt, bool, whether the device supports uploading lens abnormal temperature event-->true

C. arc
</isSupportLensTemperatureException>
<isSupportPTZFXYFinish>
<!--ro, opt, bool, the event of railway robot and PTZ going to the preset, desc:PTZFXYFinish-->true
</isSupportPTZFXYFinish>
<isSupportNormalTemperatureAlarm>

s, em
<!--ro, opt, bool, whether the device supports normal temperature alarm-->true

A
</isSupportNormalTemperatureAlarm>

no fr
<isSupportLowTemperatureAlarm>
<!--ro, opt, bool, whether the device supports low temperature alarm-->true
</isSupportLowTemperatureAlarm>

ri on
<isSupportLowCoolerLifeEvent>
<!--ro, opt, bool, whether it supports short life exception event of refrigerating machine-->true
</isSupportLowCoolerLifeEvent>

Ma oc
<isSupportObstacleAvoidanceAlarm>
<!--ro, opt, bool, whether it supports obstacle avoidance alarm-->true
up
</isSupportObstacleAvoidanceAlarm>
<isSupportPTZRotationAbnormal>
<!--ro, opt, bool-->true
co gr

</isSupportPTZRotationAbnormal>
</EventCap>
<ITCCap>
es a@

<!--ro, opt, object, related node and URIs: the node <isSupportVehicleDetection> in /ISAPI/ITC/capability and /ISAPI/ITC/capabilities-->
<isSupportITC>
Fr rc

<!--ro, opt, bool, whether the device supports ITC-->true


s

</isSupportITC>
<isSupportIllegalDictionary>
y ema

<!--ro, opt, bool, whether the device supports the violation dictionary-->true
</isSupportIllegalDictionary>
<isSupportVehicleDetection>
<!--ro, opt, bool, whether the device supports vehicle detection-->true
os fr

</isSupportVehicleDetection>
<isSupportHVTVehicleDetection>
<!--ro, opt, bool, whether the device supports mixed-traffic vehicle detection-->true
ad on

</isSupportHVTVehicleDetection>
<isSupportlicencePlateAuditData>
el .c

<!--ro, opt, bool, whether the device supports importing or exporting the license plate blocklist and allowlist data-->true
</isSupportlicencePlateAuditData>
<isSupportSearchLPListAudit>
ez

<!--ro, opt, bool, whether the device supports searching for the license plate blocklist and allowlist-->true
</isSupportSearchLPListAudit>
<isSupportVehicleDetectionManualTrigger opt="false,true">
en

<!--ro, opt, bool, whether the device supports manually triggering vehicle detection, attr:opt{opt, string}-->true
</isSupportVehicleDetectionManualTrigger>
<isSupportSyncSignalOutput>
im

<!--ro, opt, bool, whether the device supports configuring output parameters-->true
ng

</isSupportSyncSignalOutput>
Aj

</ITCCap>
<ImageCap>
Co

<!--ro, opt, object, capability of configuring image parameters-->


<isSupportRegionalExposure>
<!--ro, opt, bool, whether the device supports regional exposure-->true
</isSupportRegionalExposure>
<isSupportRegionalFocus>
<!--ro, opt, bool, whether the device supports regional focus-->true
</isSupportRegionalFocus>
</ImageCap>
<RacmCap>
<!--ro, opt, object, UI before picture search-->
<isSupportZeroChan>
<!--ro, opt, bool, whether the device supports channel-zero, desc:related URI: /ISAPI/ContentMgmt/ZeroVideo/channels-->true
</isSupportZeroChan>
<inputProxyNums>
<!--ro, opt, int, supported number of digital channels, desc:related URI: /ISAPI/ContentMgmt/InputProxy/channels/<ID>-->1
</inputProxyNums>
<eSATANums>
<!--ro, opt, int, supported number of eSATA interfaces-->1
</eSATANums>
<miniSASNums>
<!--ro, opt, int, supported number of miniSAS interfaces-->1
</miniSASNums>
<nasNums>
<!--ro, opt, int, supported number of NAS devices, desc:related URI: /ISAPI/ContentMgmt/Storage/nas-->1
<!--ro, opt, int, supported number of NAS devices, desc:related URI: /ISAPI/ContentMgmt/Storage/nas-->1
</nasNums>
<ipSanNums>
<!--ro, opt, int, supported number of IPSANs-->1
</ipSanNums>
<isSupportRaid>
<!--ro, opt, bool, whether the device supports RAID-->true
</isSupportRaid>
<isSupportExtHdCfg>
<!--ro, opt, bool, whether the device supports advanced HDD management-->true
</isSupportExtHdCfg>
<isSupportTransCode>
<!--ro, opt, bool, whether the device supports live view transcoding-->true
</isSupportTransCode>
<isSupportIpcImport>
<!--ro, opt, bool, whether the device supports importing the configuration file of the network camera, desc:related URI:

m
/ISAPI/ContentMgmt/InputProxy/ipcConfig-->true
</isSupportIpcImport>

co
<NasMountType>
<!--ro, opt, object, NAS mounting type-->

a.
<isNFSSupportAuthentication>
<!--ro, opt, bool, whether the device supports NFS authentication-->true
</isNFSSupportAuthentication>

C. arc
<isCIFSSupportAuthentication>
<!--ro, opt, bool, whether the device supports CIFS authentication-->true
</isCIFSSupportAuthentication>
</NasMountType>

s, em
<isSupportIpcStreamType>
<!--ro, opt, bool, whether the device supports the stream type of the network camera-->true

A
</isSupportIpcStreamType>

no fr
<isSupportIOInputProxy>
<!--ro, opt, bool, whether the device supports dynamic input channels, desc:related URI: /ISAPI/ContentMgmt/IOProxy/inputs-->true

ri on
</isSupportIOInputProxy>
<isSupportIOOutputProxy>
<!--ro, opt, bool, whether the device supports dynamic output channels, desc:related URI: /ISAPI/ContentMgmt/IOProxy/outputs-->true

Ma oc
</isSupportIOOutputProxy>
<isSupportPTZRs485Proxy>
<!--ro, opt, bool, whether the device supports dynamic PTZ RS-485 channels, desc:related URI: /ISAPI/ContentMgmt/PTZCtrlProxy/capabilities-->true
up
</isSupportPTZRs485Proxy>
<isSupportSrcIDSearch>
co gr

<!--ro, opt, bool, whether the device supports stream ID search-->true


</isSupportSrcIDSearch>
<isSupportReversePlayback>
es a@

<!--ro, opt, bool, whether the device supports reverse playback-->true


</isSupportReversePlayback>
<isSupportSMARTTest>
Fr rc

<!--ro, opt, bool, whether the device supports HDD detection, desc:related URI: /ISAPI/ContentMgmt/Storage/hdd/SMARTTest/config-->true
</isSupportSMARTTest>
y ema

<isSupportDownloadByTime>
<!--ro, opt, bool, whether the device supports downloading by time, desc:related URI: /ISAPI/ContentMgmt/download/capabilities-->true
</isSupportDownloadByTime>
<pictureSearchType
opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,FieldDetection,scenechangedetection,LineDetection,
os fr

regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,playSnapShot,safetyH
elmet,
ad on

personQueueCounting,personQueueTime,violentMotion,leavePosition,advReachHeight,peopleNumChange,mixedTargetDetection,illegalParking,pedestrian,construction,r
oadblock,
abandonedObject,trafficAccident,fogDetection,smokeDetection,personDensity,failDown,accessController,videoInterCom,GJD,Luminite,OPTEX,securityControlPanel,ge
el .c

tUp,toiletTarry,
playCellphone,vehicleMonitor,vibrationDetection,running,retention,spacingChange,yardTarry,keyPersonGetUp,sitQuietly,standUp,plateRecognition,smoking,onThePh
one,fatigueDriving,
ez

notLookingStraightAhead,leaveThePost,seatBelt,sunglasses,identityAbnormal,ForwardCollisionWarning,LaneDepartureWarning,BlindSpotDetection,HeadwayMonitoringW
arning,
en

PedestrianCollisionWarning,SuddenSpeedUp,SuddenSpeedDown,SuddenLeftTurn,SuddenRightTurn,Turnover,NotYieldToPedestrian,unregisteredStreetVendor,stallOutsideS
hop,stallOccupyingRoad, illegalHeap,illegalParkingofNon-
MotorVehicle,illegalOutdoorAdvertisement,packGarbage,stallUnderUmbrella,dustbinOverflow,exposeGarbage,hangClothingAlongStreet,allPic,ATMPanel,
im

ATMSurround,ATMFace,ATMSafetyCabin,loitering,smokeDetectAlarm,alarmResult">
<!--ro, opt, string, picture search type, attr:opt{opt, string}-->test
ng

</pictureSearchType>
Aj

<recordSearchType
Co

opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,FieldDetection,scenechangedetection,LineDetection,
regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,playSnapShot,safetyH
elmet,
failDown,personDensityDetection,smokeDetection,vibrationDetection,unregisteredStreetVendor,stallOutsideShop,stallOccupyingRoad,illegalHeap,illegalParkingofN
on-MotorVehicle,
illegalOutdoorAdvertisement,packGarbage,stallUnderUmbrella,dustbinOverflow,exposeGarbage,hangClothingAlongStreet,ATMPanel,ATMSurround,ATMFace,ATMSafetyCabin
">
<!--ro, opt, string, video search type, attr:opt{opt, string}, desc:"llEvent" (all events), "CMR" (capture by schedule), "MOTION" (capture motion
detection pictures), "ALARM" (capture alarm pictures), "EDR" (capture alarm pictures or motion detection pictures), "ALARMANDMOTION" (capture alarm pictures
and motion detection pictures), "Command", "pir" (pir alarm), "wlsensor" (wireless alarm), "callhelp" (panic alarm), "facedetection" (face detection),
"FieldDetection" (intrusion detection), "scenechangedetection" (scene change detection), "LineDetection" (line crossing detection)-->test
</recordSearchType>
<isSupportActivateIpc>
<!--ro, opt, bool, whether the device supports activating the network camera-->true
</isSupportActivateIpc>
<isSupportCheckIpcSecurity>
<!--ro, opt, object, device password detection-->
<isSupportCheckPassword>
<!--ro, opt, bool, whether the device supports password detection-->true
</isSupportCheckPassword>
</isSupportCheckIpcSecurity>
<isSupportMainAndSubRecord>
<!--ro, opt, bool, whether the device supports the main stream and sub-stream recording-->true
</isSupportMainAndSubRecord>
</isSupportMainAndSubRecord>
<isSupportSyncIPCPassword>
<!--ro, opt, bool, whether the device supports synchronizing the password of the network camera-->true
</isSupportSyncIPCPassword>
<isSupportTransferIPC>
<!--ro, opt, bool, whether the device supports transparent transmission of the network camera-->true
</isSupportTransferIPC>
<isSupportSmartSearch>
<!--ro, opt, bool, whether the device supports video dual-VCA, desc:related URI: /ISAPI/ContentMgmt/SmartSearch/capabilities-->true
</isSupportSmartSearch>
<isSupportPOS>
<!--ro, opt, bool, whether the device supports POS-->true
</isSupportPOS>
<isSupportLinkNum>
<!--ro, opt, bool, whether the device supports getting the number of links, desc:related URI: /ISAPI/ContentMgmt/InputProxy/channels/<ID>/linkNum--
>true
</isSupportLinkNum>

m
<isSupportPassBackBasicCfg>

co
<!--ro, opt, bool, whether the device supports configuring basic parameters of the CVR copy-back function, desc:related URI:
/ISAPI/ContentMgmt/record/passback/basicCfg/capabilities-->true
</isSupportPassBackBasicCfg>

a.
<PassBackTaskConfig>
<!--ro, opt, object, capability of managing tasks of the CVR copy-back function-->

C. arc
<isSupportAddTask>
<!--ro, opt, bool, whether the device supports adding a task, desc:related URI: /ISAPI/ContentMgmt/record/passback/addTask/capabilities-->true
</isSupportAddTask>
<isSupportSearchTask>

s, em
<!--ro, opt, bool, whether the device supports searching tasks, desc:related URI: /ISAPI/ContentMgmt/record/passback/searchTask/capabilities-->true
</isSupportSearchTask>

A
<isSupportControlTask>

no fr
<!--ro, opt, bool, whether the device supports controlling the task, desc:related URI: /ISAPI/ContentMgmt/record/passback/controlTask/capabilities--
>true
</isSupportControlTask>

ri on
<isSupportDeleteTask>
<!--ro, opt, bool, whether the device supports deleting the task, desc:related URI: /ISAPI/ContentMgmt/record/passback/deleteTask/capabilities--

Ma oc
>true
</isSupportDeleteTask>
</PassBackTaskConfig>
up
<PassBackPlanConfig>
<!--ro, opt, object, capability of configuring the CVR copy-back schedule-->
<isSupportAddPlan>
co gr

<!--ro, opt, bool, whether the device supports adding a schedule, desc:related URI: /ISAPI/ContentMgmt/record/passback/addPlan/capabilities-->true
</isSupportAddPlan>
<isSupportSearchPlan>
es a@

<!--ro, opt, bool, whether the device supports searching schedules, desc:related URI: /ISAPI/ContentMgmt/record/passback/searchPlan/capabilities--
>true
Fr rc

</isSupportSearchPlan>
s

<isSupportDeletePlan>
<!--ro, opt, bool, whether the device supports deleting the schedule, desc:related URI: /ISAPI/ContentMgmt/record/passback/deletePlan/capabilities--
y ema

>true
</isSupportDeletePlan>
</PassBackPlanConfig>
<IRAIDCap>
os fr

<!--ro, opt, object, network array capability-->


<isSupportIRAIDRapidConfiguration>
<!--ro, opt, bool, whether the device supports the rapid IRAID configuration, desc:related URI:
ad on

/ISAPI/ContentMgmt/Storage/IRAID/RapidConfiguration/capabilities-->true
</isSupportIRAIDRapidConfiguration>
el .c

</IRAIDCap>
<isSupportStorageExtraInfo>
<!--ro, opt, bool, whether the device supports configuring additional storage information, desc:related URI:
ez

/ISAPI/ContentMgmt/Storage/ExtraInfo/capabilities-->true
</isSupportStorageExtraInfo>
<isSupportRecordStatus>
en

<!--ro, opt, bool, whether the device supports getting the recording status, desc:related URI: /ISAPI/ContentMgmt/channels/<ID>/record/capabilities--
>true
im

</isSupportRecordStatus>
<isSupportRacmChannelsCap>
ng

<!--ro, opt, bool, whether the device supports the Rcam capability by channel, desc:related URI: /ISAPI/ContentMgmt/channels/<ID>/capabilities-->true
Aj

</isSupportRacmChannelsCap>
<LockCap>
Co

<!--ro, opt, object, Video Locking and Unlocking, desc:related URI: /ISAPI/ContentMgmt/record/control/locks/capabilities-->
</LockCap>
<isSupportForamtAll>
<!--ro, opt, bool, whether the device supports formatting all HDDs, desc:related URI: /ISAPI/ContentMgmt/Storage/hdd/format-->true
</isSupportForamtAll>
<isSupportExtendCabinetCfg>
<!--ro, opt, bool, whether the device supports configuring parameters of the extended cabinet. Related URI:
/ISAPI/ContentMgmt/Storage/ExtendCabinet/capabilities-->true
</isSupportExtendCabinetCfg>
<diskGroupNums>
<!--ro, opt, int, supported number of disk groups, desc:related URI: /ISAPI/ContentMgmt/Storage/diskGroup-->1
</diskGroupNums>
<ExternalDevice>
<!--ro, opt, object, external device storage-->
<USB>
<!--ro, opt, object, USB information-->
<debugLogOutput>
<!--ro, opt, bool, whether to enable the debugging log, desc:related URI: /ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json-->true
</debugLogOutput>
<isSupportCapturePackage>
<!--ro, opt, bool, whether the device supports configuring capture and filter function of a USB, desc:related URI:
/ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage/capabilities?format=json-->true
</isSupportCapturePackage>
<isSupportStreamStorage>
<!--ro, opt, bool, whether the device supports saving stream to a USB, desc:related URI:
/ISAPI/ContentMgmt/Storage/externalDevice/USB/streamStorage/capabilities?format=json-->true
</isSupportStreamStorage>
</USB>
</ExternalDevice>
<customProtocolNums>
<!--ro, opt, int, number of custom protocols connected via IPC, desc:related URI: /ISAPI/ContentMgmt/InputProxy/customProtocols, supported number of
custom protocols-->1
</customProtocolNums>
<isSupportIPCTiming>
<!--ro, opt, bool, whether the device supports synchronizing the time of the network camera, desc:related URI:
/ISAPI/ContentMgmt/InputProxy/channels/<ID>. In this protocol, whether the <enableTiming> node supports-->true
</isSupportIPCTiming>
<isSupportLogConfig>
<!--ro, opt, bool, whether the device supports log configuration, desc:related URI: /ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json-->true

m
</isSupportLogConfig>

co
<SecurityLog>
<!--ro, opt, object, device's capability of security log-->
<isSupportSecurityLog>

a.
<!--ro, opt, bool, whether the device supports the security log-->true
</isSupportSecurityLog>
<isSupportLogServer>

C. arc
<!--ro, opt, bool, whether it supports security log server configuration-->true
</isSupportLogServer>
<isSupportLogServerTest>
<!--ro, opt, bool, whether it supports security log server test-->true

s, em
</isSupportLogServerTest>
<SecurityLogTypeList>

A
<!--ro, req, array, list of security log types, subType:object-->

no fr
<SecurityLogType>
<!--ro, opt, object, security log type-->

ri on
<primaryType>
<!--ro, req, string, main log type, desc:"Event", "Operation", "Other", "All"-->test
</primaryType>

Ma oc
<secondaryType opt="all">
<!--ro, req, string, minor log type, attr:opt{opt, string}, desc:for other types, refer to the appendix-->test
</secondaryType>
up
</SecurityLogType>
</SecurityLogTypeList>
co gr

<isSupportLogServerList>
<!--ro, opt, bool, whether the device supports batch configuring security log server-->true
</isSupportLogServerList>
es a@

</SecurityLog>
<isSupportGetBackupDevice>
<!--ro, opt, bool, whether the device supports getting the backup device, desc:related URI: /ISAPI/ContentMgmt/Storage/backup/device?format=json--
Fr rc

>true
</isSupportGetBackupDevice>
y ema

<isSupportAutoBackup>
<!--ro, opt, bool, whether the device supports automatic backup, desc:related URI: /ISAPI/ContentMgmt/Storage/backup/auto/capabilities?format=json--
>true
</isSupportAutoBackup>
os fr

<certificateValidationEnabled>
<!--ro, opt, bool, whether to enable the certification validation, desc:related URI: /ISAPI/ContentMgmt/InputProxy/channels/<ID>. In this protocol,
whether the <certificateValidationEnabled> node supports-->true
ad on

</certificateValidationEnabled>
<defaultAdminPortEnabled>
<!--ro, opt, bool, whether to enable the default communication port, desc:related URI: /ISAPI/ContentMgmt/InputProxy/channels/<ID>. In this protocol,
el .c

whether the <defaultAdminPortEnabled> node supports-->true


</defaultAdminPortEnabled>
ez

<isSupportLogDataPackage>
<!--ro, opt, bool, whether the device supports exporting the log files, desc:related URI: /ISAPI/ContentMgmt/logSearch/dataPackage-->true
</isSupportLogDataPackage>
en

<logSearchTimeSpanNums>
<!--ro, opt, int, number of time periods for log search, desc:related URI: /ISAPI/ContentMgmt/logSearch; corresponding node: < the
CMSearchDescription->-->1
im

</logSearchTimeSpanNums>
<CloudStorageServerCap>
ng

<!--ro, opt, object, capability of configuring the cloud storage server-->


Aj

<isSupportCloudStorageParameter>
Co

<!--ro, opt, bool, whether the device supports configuring the cloud storage parameters, desc:related URI:
/ISAPI/ContentMgmt/Storage/cloudServer/capabilities?format=json-->true
</isSupportCloudStorageParameter>
<isSupportCloudStoragePool>
<!--ro, opt, bool, whether the device supports configuring the cloud storage pool, desc:related URI:
/ISAPI/ContentMgmt/Storage/cloudServer/pool/capabilities?format=json-->true
</isSupportCloudStoragePool>
<supportChannelsNum>
<!--ro, opt, int, number of channels supported by the cloud storage, desc:If this node is not returned, all channels of the device support; if this
node is returned, several channels of the device supports cloud storage (at present, it will not return the specific number of the channels supporting cloud
storage)-->1
</supportChannelsNum>
</CloudStorageServerCap>
<isSupportWebPrivatePlaybackByUTC>
<!--ro, opt, bool, whether it supports playback based on Web private protocol-->true
</isSupportWebPrivatePlaybackByUTC>
<isSupportFindCommonFileByUTC>
<!--ro, opt, bool, whether it supports searching for ordinary files (private protocols) by UTC time-->true
</isSupportFindCommonFileByUTC>
<isSupportFindEventFileByUTC>
<!--ro, opt, bool, whether it supports searching for event files (private protocols) by UTC time-->true
</isSupportFindEventFileByUTC>
<isSupportSmartSearchRecordByUTC>
<!--ro, opt, bool, whether it supports smart video search by UTC time-->true
<!--ro, opt, bool, whether it supports smart video search by UTC time-->true
</isSupportSmartSearchRecordByUTC>
<isSupportMRDSearchByTimeZone>
<!--ro, opt, bool, whether it supports searching for files (private protocols) by monthly calendar by UTC time-->true
</isSupportMRDSearchByTimeZone>
<isSupportSearchRecordLabelByUTC>
<!--ro, opt, bool, whether it supports searching for video tags by UTC time-->true
</isSupportSearchRecordLabelByUTC>
<isSupportSearchPictureByUTC>
<!--ro, opt, bool, whether it supports searching for pictures by UTC time-->true
</isSupportSearchPictureByUTC>
<isSupportSmartSearchPictureByUTC>
<!--ro, opt, bool, whether it supports smart pictures search by UTC time-->true
</isSupportSmartSearchPictureByUTC>
<isSupportFindLogByUTC>
<!--ro, opt, bool, whether it supports searching log by UTC time-->true

m
</isSupportFindLogByUTC>
<isSupportUploadRecordByUTC>

co
<!--ro, opt, bool, whether it supports uploading files to cloud storage by UTC time-->true
</isSupportUploadRecordByUTC>
<isSupportPlaybackByUTC>

a.
<!--ro, opt, bool, whether it supports playback and locating by UTC time-->true
</isSupportPlaybackByUTC>

C. arc
<isSupportFaceDetecttionAlarmByTimeZone>
<!--ro, opt, bool, no file is found-->true
</isSupportFaceDetecttionAlarmByTimeZone>
<isSupportSourceModify>

s, em
<!--ro, opt, bool, whether it supports configuring the parameters of the LAN IPC, desc:related URI:
/ISAPI/ContentMgmt/InputProxy/sourceModify/capabilities-->true

A
</isSupportSourceModify>

no fr
<isSupportCountingSearchByUTC>
<!--ro, opt, bool, whether it supports searching people counting results by UTC time-->true
</isSupportCountingSearchByUTC>

ri on
<isSupportCluster>
<!--ro, opt, bool, whether the device supports the cluster function, desc:related URI: /ISAPI/ContentMgmt/Cluster-->true

Ma oc
</isSupportCluster>
<supportAIDTFSType opt="illegalParking,wrongdirection,crosslane,vehicleexist,lanechange,turnround,evidence">
<!--ro, opt, string, the event picture search type supported by AID and TFS, attr:opt{opt, string}-->test
up
</supportAIDTFSType>
<isSupportMisinfoStateSearch>
<!--ro, opt, bool, whether it supports searching by false alarm status-->true
co gr

</isSupportMisinfoStateSearch>
<isSupportOneKeyOperationStorageData>
es a@

<!--ro, opt, bool, whether it supports one-touch configuration for storage data, desc:related URI: /ISAPI/ContentMgmt/Storage/oneKey/capabilities?
format=json-->true
</isSupportOneKeyOperationStorageData>
Fr rc

<eventRecordSearch>
<!--ro, opt, object, whether the device supports searching for videos by event, desc:related URI: /ISAPI/ContentMgmt/eventRecordSearch?format=json-->
<eventType opt="faceContrast,faceSnap,vehicleMatchResult,hawkResult">
y ema

<!--ro, opt, string, event type, attr:opt{opt, string}-->test


</eventType>
<auxEventType opt="faceContrastFailure,faceContrastSuccess">
<!--ro, opt, string, search sub type of the event, attr:opt{opt, string}-->test
os fr

</auxEventType>
</eventRecordSearch>
<isSupportManualRecord>
ad on

<!--ro, opt, bool, whether the device supports manual recording, desc:related URI: /ISAPI/ContentMgmt/record/control/manual/capabilities?format=json--
>true
el .c

</isSupportManualRecord>
<isSupportRemark>
<!--ro, opt, bool, whether it supports file remarks-->true
ez

</isSupportRemark>
<FileUpload>
<!--ro, opt, object, auto-upload file-->
en

<enabled>
<!--ro, req, bool, whether it supports uploading the file-->true
im

</enabled>
</FileUpload>
ng

<PoliceInfoUpload>
Aj

<!--ro, opt, object, auto-upload police information-->


<enabled>
Co

<!--ro, req, bool, whether it supports uploading the police information-->true


</enabled>
</PoliceInfoUpload>
<PoliceInfo>
<!--ro, opt, object, police officer information-->
<policeID>
<!--ro, opt, bool, whether the device supports police ID-->true
</policeID>
<policeCode>
<!--ro, opt, bool, whether the device supports police number-->true
</policeCode>
<policeName>
<!--ro, opt, bool, whether the device supports police name-->true
</policeName>
<password>
<!--ro, opt, bool, whether the device supports police password-->true
</password>
<deviceID>
<!--ro, opt, bool, whether the device supports device ID-->true
</deviceID>
</PoliceInfo>
<isSupportAssignChannelID>
<!--ro, opt, bool, whether the device supports specifying the access channel No. when adding the network camera, desc:related URI:
/ISAPI/ContentMgmt/InputProxy/channels/<ID>. In this protocol, whether the <defaultAdminPortEnabled> node supports-->true
</isSupportAssignChannelID>
<isSupportAssignStreamID>
<!--ro, opt, bool, whether it supports specifying stream ID of the channel when adding the network camera in channel mode, desc:related URI:
/ISAPI/ContentMgmt/InputProxy/channels/<ID>. In this protocol, whether the <defaultAdminPortEnabled> node supports-->true
</isSupportAssignStreamID>
<PictureSearchSubTypeList>
<!--ro, opt, array, list of picture search sub type, subType:object-->
<PictureSearchSubType>
<!--ro, opt, object, the sub type of picture search-->
<mainType>
<!--ro, req, string, main event type of the searched picture-->test
</mainType>
<subType opt="all,motorVehicle,nonMotorVehicle,pedestrian">
<!--ro, req, string, sub type of each main event type, attr:opt{opt, string}-->test
</subType>

m
</PictureSearchSubType>

co
</PictureSearchSubTypeList>
<isSupportPlaybackStreamIDByUTC>
<!--ro, opt, bool, whether it supports playback by stream ID according to UTC time-->true

a.
</isSupportPlaybackStreamIDByUTC>
<isSupportTimeLockStreamIDByUTC>
<!--ro, opt, bool, whether it supports locking and unlocking the video segment by steam ID according to UTC time-->true

C. arc
</isSupportTimeLockStreamIDByUTC>
<isSupportTimeSearch>
<!--ro, opt, bool, whether it supports searching for recording start and end time by channel, desc:related URI: /ISAPI/ContentMgmt/time/search?
format=json-->true

s, em
</isSupportTimeSearch>

A
<behaviorEventPicSearch opt="allBehaviorEvent,running,group,violentMotion,failDown,playCellphone,peopleNumChange,leavePosition,retention,sleepOnduty">

no fr
<!--ro, opt, string, abnormal event detection supported by picture search, attr:opt{opt, string}-->test
</behaviorEventPicSearch>
<perimeterEventPicSearch opt="allPerimeterEvent,linedetection,fielddetection,regionEntrance,regionExiting,loitering">

ri on
<!--ro, opt, string, perimeter protection events supported by picture search, attr:opt{opt, string}-->test
</perimeterEventPicSearch>
<isSupportSourceStatus>

Ma oc
<!--ro, opt, bool, whether it supports getting the status of access source-->true
</isSupportSourceStatus>
up
<isSupportSSDSMARTTest>
<!--ro, opt, bool, whether the device supports S.M.A.R.T. detection on SSD, desc:related URI: /ISAPI/ContentMgmt/Storage/ssd/<ID>/SMARTTest/start--
>true
co gr

</isSupportSSDSMARTTest>
<MobileStorage>
<!--ro, opt, object, storage capability of the mobile HDD-->
es a@

<isSupportGetFileTime>
<!--ro, opt, bool, whether it supports getting the file time of the mobile HDD, desc:it supports mobile HDD currently. Related URI:
/ISAPI/ContentMgmt/mobileStorage/fileTime/capabilities?format=json-->true
Fr rc

</isSupportGetFileTime>
</MobileStorage>
y ema

<isSupportGetChannelList>
<!--ro, opt, bool, whether it supports getting channels of the HDD, desc:it supports mobile HDD currently. Related URI:
/ISAPI/ContentMgmt/Storage/hdd/channelList/capabilities?format=json-->true
</isSupportGetChannelList>
os fr

<isSupportCascade>
<!--ro, opt, bool, whether it supports configuring parameters for NVR cascading topology-->true
</isSupportCascade>
ad on

<isSupportPictureInfo>
<!--ro, opt, bool, whether it supports picture search on the SD card of the capture camera-->true
</isSupportPictureInfo>
el .c

<isSupportCloudStorageModel>
<!--ro, opt, bool, whether the device supports configuring the cloud storage mode,
ez

desc:/ISAPI/ContentMgmt/Storage/CloudStorageModel/<channelID>/capabilities?format=json-->true
</isSupportCloudStorageModel>
<isSupportCloudStorageModelList>
en

<!--ro, opt, bool, whether the device supports configuring cloud storage modes in a batch,
desc:/ISAPI/ContentMgmt/Storage/CloudStorageModel/<channelID>?format=json-->true
</isSupportCloudStorageModelList>
im

<isSupportRecordAudio>
ng

<!--ro, opt, bool, whether the device supports recording the audio, desc:only the audio will be recorded and the video will not be recorded. Related
Aj

URI: /ISAPI/ContentMgmt/recordAudio/<audioID>/capabilities?format=json-->true
</isSupportRecordAudio>
Co

<isSupportSearchAudio>
<!--ro, opt, bool, whether the device supports searching for the audio, desc:related URI: /ISAPI/ContentMgmt/recordAudio/search/capabilities?
format=json-->true
</isSupportSearchAudio>
<isSupportAudioDailyDistribution>
<!--ro, opt, bool, whether it supports searching for audio file information by monthly calendar, desc:related URI:
/ISAPI/ContentMgmt/recordAudio/<audioID>/searchDailyDistribution?format=json-->true
</isSupportAudioDailyDistribution>
<isSupportDownloadAudio>
<!--ro, opt, bool, whether the device supports downloading the audio by file name, desc:related URI:
/ISAPI/ContentMgmt/recordAudio/fileNameDownload/capabilities?format=json-->true
</isSupportDownloadAudio>
<isSupportDeleteAudio>
<!--ro, opt, bool, whether the device supports deleting the recorded audio file, desc:related URI: /ISAPI/ContentMgmt/recordAudio/deleteFile?
format=json-->true
</isSupportDeleteAudio>
<isSupportSearchRemoteAlbum>
<!--ro, opt, bool, whether the device supports remotely searching for album information, desc:related URI: /ISAPI/ContentMgmt/searchRemoteAlbum?
format=json-->true
</isSupportSearchRemoteAlbum>
<isSupportStreamParam>
<!--ro, opt, bool, whether the device supports configuring the access stream parameters of all digital channels, desc:related URI:
/ISAPI/ContentMgmt/InputProxy/channels/streamParam/capabilities?format=json-->true
</isSupportStreamParam>
</isSupportStreamParam>
<isSupportFusionChan>
<!--ro, opt, bool, whether the device supports fusion channel, desc:if this node does not exist, it indicates that the device does not support the
function; interaction IP channel: it is a concept from the education sharing system; the education sharing system will allocate IP channels to images of the
connected sub classrooms or meeting rooms. fusion channel: a channel generated when adding the NVR locally or remotely; it supports live view, playback,
storage, and recording schedule/linkage configuration; the channel will take effect by enabling the fusion channel-->true
</isSupportFusionChan>
<isSupportRecordMultipleDownload>
<!--ro, opt, bool, whether the device supports downloading videos in multiples, desc:if this node does not exist, it indicates that the device does
not support the function by default-->true
</isSupportRecordMultipleDownload>
</RacmCap>
<PTZCtrlCap>
<!--ro, opt, object, device's PTZ capability-->
<isSupportPatrols>
<!--ro, opt, bool, whether the device supports patrol-->true

m
</isSupportPatrols>
<isSupportCombinedPath>

co
<!--ro, opt, bool, whether the device supports the PTZ combined path-->true
</isSupportCombinedPath>

a.
<isSupportRailwayRobot>
<!--ro, opt, bool, whether the device supports railway robot, desc:/ISAPI/PTZCtrl/channels/<channelID>/RailwayRobot/capabilities?format=json-->true
</isSupportRailwayRobot>

C. arc
</PTZCtrlCap>
<SmartCap>
<!--ro, opt, object, compact and smart capability, desc:/ISAPI/Smart/capabilities-->
<isSupportROI>

s, em
<!--ro, opt, bool, whether the device supports ROI encoding configuration-->true
</isSupportROI>

A
<isSupportFaceDetect>

no fr
<!--ro, opt, bool, whether the device supports face detection-->true
</isSupportFaceDetect>

ri on
<isSupportIntelliTrace>
<!--ro, opt, bool, whether the device supports smart tracking-->true
</isSupportIntelliTrace>

Ma oc
<isSupportFieldDetection>
<!--ro, opt, bool, whether the device supports intrusion detection-->true
</isSupportFieldDetection>
up
<isSupportDefocusDetection>
<!--ro, opt, bool, whether the device supports defocus detection-->true
</isSupportDefocusDetection>
co gr

<isSupportAudioDetection>
<!--ro, opt, bool, whether the device supports audio detection-->true
es a@

</isSupportAudioDetection>
<isSupportSceneChangeDetection>
<!--ro, opt, bool, whether the device supports scene change detection-->true
Fr rc

</isSupportSceneChangeDetection>
<isSupportLineDetection>
<!--ro, opt, bool, whether the device supports line crossing detection-->true
y ema

</isSupportLineDetection>
<isSupportRegionEntrance>
<!--ro, opt, bool, whether the device supports region entrance detection-->true
</isSupportRegionEntrance>
os fr

<isSupportRegionExiting>
<!--ro, opt, bool, whether the device supports region exiting detection-->true
ad on

</isSupportRegionExiting>
<isSupportLoitering>
<!--ro, opt, bool, whether the device supports loitering detection-->true
el .c

</isSupportLoitering>
<isSupportGroup>
<!--ro, opt, bool, whether the device supports people gathering detection-->true
ez

</isSupportGroup>
<isSupportRapidMove>
en

<!--ro, opt, bool, whether the device supports fast moving detection-->true
</isSupportRapidMove>
<isSupportParking>
im

<!--ro, opt, bool, whether the device supports parking detection-->true


</isSupportParking>
ng

<isSupportUnattendedBaggage>
Aj

<!--ro, opt, bool, whether the device supports unattended baggage detection-->true
</isSupportUnattendedBaggage>
Co

<isSupportAttendedBaggage>
<!--ro, opt, bool, whether the device supports object removal detection-->true
</isSupportAttendedBaggage>
<isSupportPeopleDetection>
<!--ro, opt, bool, whether the device supports human body detection-->true
</isSupportPeopleDetection>
<isSupportSmartCalibration>
<!--ro, opt, bool, whether the device supports calibration filter size-->true
</isSupportSmartCalibration>
<isSupportStorageDetection>
<!--ro, opt, bool, whether the device supports health monitoring storage-->true
</isSupportStorageDetection>
<isSupportShipsDetection>
<!--ro, opt, bool, whether the device supports ship detection-->true
</isSupportShipsDetection>
<isSupportShield>
<!--ro, opt, bool, whether the device supports configuring the compact and smart shielded regions-->true
</isSupportShield>
<isSupportAlgVersion>
<!--ro, opt, bool, whether the device supports algorithm version-->true
</isSupportAlgVersion>
<isSupportVideoOverlap>
<!--ro, opt, bool, whether the device supports configuring information overlay for video stream-->true
<!--ro, opt, bool, whether the device supports configuring information overlay for video stream-->true
</isSupportVideoOverlap>
<isSupportParkingState>
<!--ro, opt, bool, whether the device supports parking status-->true
</isSupportParkingState>
<isSupportChannelResource>
<!--ro, opt, bool, whether the device supports channel resources-->true
</isSupportChannelResource>
<isSupportAnalysisUnitSwitch opt="true,false">
<!--ro, opt, bool, whether the device supports switching analysis unit, attr:opt{opt, string}-->true
</isSupportAnalysisUnitSwitch>
<isSupportHFPD>
<!--ro, opt, bool, whether the device supports frequently appeared person detection, desc:related URI: /ISAPI/SDT/HFPD?format=json-->true
</isSupportHFPD>
<isSupportImageROI>
<!--ro, opt, bool, whether the device supports smartJpeg (image ROI)-->true
</isSupportImageROI>

m
<isSupportLFPD>

co
<!--ro, opt, bool, whether the device supports rarely appeared person detection, desc:related URI: /ISAPI/SDT/LFPD?format=json-->true
</isSupportLFPD>
<isSupportSmartOverlapParams>

a.
<!--ro, opt, bool-->true
</isSupportSmartOverlapParams>

C. arc
</SmartCap>
<isSupportEhome>
<!--ro, opt, bool, whether it supports ISUP functions: true (support),this node is not returned (not support)-->true
</isSupportEhome>
<isSupportStreamingEncrypt>

s, em
<!--ro, opt, bool, whether the device supports stream encryption-->true

A
</isSupportStreamingEncrypt>

no fr
<TestCap>
<!--ro, opt, object, test capability-->
<isSupportEmailTest>

ri on
<!--ro, opt, bool, whether the device supports email test-->true
</isSupportEmailTest>
</TestCap>

Ma oc
<ImageMiscCap>
<!--ro, opt, object, DPC capability-->
up
<isSupportDPC>
<!--ro, opt, bool, whether the device supports DPC-->true
</isSupportDPC>
co gr

</ImageMiscCap>
<PanoramaCap>
<!--ro, opt, object, capability of panoramic channels-->
es a@

<isSupportGeneratePanorama>
<!--ro, opt, bool, whether the device supports generating panoramic images-->true
Fr rc

</isSupportGeneratePanorama>
s

<isSupportPanoramaPosition3D>
<!--ro, opt, bool, whether the device supports panoramic 3D position-->true
y ema

</isSupportPanoramaPosition3D>
<isSupportPreset>
<!--ro, opt, bool, whether the device supports configuring panoramic preset-->true
</isSupportPreset>
os fr

</PanoramaCap>
<ThermalCap>
<!--ro, opt, object, thermal capability, desc:related URI: /ISAPI/Thermal/capabilities-->
ad on

<isSupportFireDetection>
<!--ro, opt, bool, whether the device supports fire detection, desc:related URI: /ISAPI/Thermal/channels/<ID>/fireDetection/capabilities-->true
el .c

</isSupportFireDetection>
<isFireFocusZoomSupport>
<!--ro, opt, bool, whether the device supports visible light lens zooming, desc:related URI: /ISAPI/Thermal/channels/<ID>/fireFocusZoom-->true
ez

</isFireFocusZoomSupport>
<isSupportThermometry>
<!--ro, opt, bool, whether the device supports thermography, desc:related URI: /ISAPI/Thermal/channels/<ID>/thermometry/<SID>/capabilities-->true
en

</isSupportThermometry>
<isSupportRealtimeThermometry>
<!--ro, opt, bool, whether the device supports uploading real-time temperature measurement data-->true
im

</isSupportRealtimeThermometry>
ng

<isSupportThermIntell>
Aj

<!--ro, opt, bool, whether the device supports configuring smart thermal mutual exclusion, desc:related URI:
/ISAPI/Thermal/channels/<ID>/thermIntell/capabilities-->true
Co

</isSupportThermIntell>
<isSupportNVR>
<!--ro, opt, bool, it is used for client to check-->true
</isSupportNVR>
<isSupportThermometrySchedule>
<!--ro, opt, bool, whether the device supports the arming schedule of temperature measurement, desc:related URI: /ISAPI/Event/schedules/thermometry--
>true
</isSupportThermometrySchedule>
<isSupportTemperatureSchedule>
<!--ro, opt, bool, whether the device supports the arming schedule of temperature difference, desc:related URI: /ISAPI/Event/schedules/temperature--
>true
</isSupportTemperatureSchedule>
<isSupportFireDetectionSchedule>
<!--ro, opt, bool, whether the device supports the arming schedule of fire detection, desc:related URI: /ISAPI/Event/schedules/fireDetections-->true
</isSupportFireDetectionSchedule>
<isSupportPower>
<!--ro, opt, bool, whether the device supports power on/off capability, desc:related URI: /ISAPI/Thermal/Power/capabilities-->true
</isSupportPower>
<isSupportRealtimeTempHumi>
<!--ro, opt, bool, whether the device supports real-time detection of temperature and humidity, desc:related URI:
/ISAPI/Thermal/TempHumi/capabilities-->true
</isSupportRealtimeTempHumi>
<ManualThermCap>
<!--ro, opt, object, the capability of manual temperature measurement-->
<!--ro, opt, object, the capability of manual temperature measurement-->
<manualThermRuleNum>
<!--ro, opt, int, if this node is not returned, it indicates manual temperature measurement is not supported, desc:related URI:
/ISAPI/Thermal/manualThermometry/capabilities-->true
</manualThermRuleNum>
</ManualThermCap>
<isSupportManualThermBasic>
<!--ro, opt, bool, whether the device supports basic configuration of manual temperature measurement, desc:related URI:
/ISAPI/Thermal/manualThermBasic/capabilities-->true
</isSupportManualThermBasic>
<isSupportFireShieldMask>
<!--ro, opt, bool, whether the device supports configuring the parameters of fire shielded regions, desc:related URI:
/ISAPI/Thermal/channels/<ID>/fireShieldMask/capabilities-->true
</isSupportFireShieldMask>
<isSupportSmokeShieldMask>
<!--ro, opt, bool, whether the device supports configuring the parameters of smoke shielded regions, desc:related URI:

m
/ISAPI/Thermal/channels/<ID>/smokeShieldMask/capabilities-->true
</isSupportSmokeShieldMask>

co
<isSupportThermometryMode>
<!--ro, opt, bool, whether the device supports configuring temperature measurement mode, desc:related URI:

a.
/ISAPI/Thermal/channels/<ID>/thermometryMode/capabilities-->true
</isSupportThermometryMode>
<isSupportThermalPip>

C. arc
<!--ro, opt, bool, whether the device supports the PIP configuration, desc:related URI: /ISAPI/Thermal/channels/<ID>/pip/capabilities-->true
</isSupportThermalPip>
<isSupportThermalIntelRuleDisplay>
<!--ro, opt, bool, whether the device supports the PIP configuration, desc:related URI: /ISAPI/Thermal/channels/<ID>/IntelRuleDisplay/capabilities--

s, em
>true
</isSupportThermalIntelRuleDisplay>

A
<AlgVersionInfo>

no fr
<!--ro, opt, object, whether the device supports getting the version information of thermal algorithms library, desc:related URI:
/ISAPI/Thermal/AlgVersion-->

ri on
<thermometryAlgName min="1" max="128">
<!--ro, opt, string, version information of temperature measurement algorithms library, attr:min{opt, string},max{opt, string}-->test
</thermometryAlgName>

Ma oc
<shipsAlgName min="1" max="128">
<!--ro, opt, string, version name of ship detection algorithms library, attr:min{opt, string},max{opt, string}-->test
</shipsAlgName>
up
<fireAlgName min="1" max="128">
<!--ro, opt, string, algorithm library version name of fire detection, attr:min{opt, int},max{opt, int}-->test
co gr

</fireAlgName>
<smokeAlgName min="1" max="128">
<!--ro, opt, string, algorithm library version name of smoke detection, attr:min{opt, int},max{opt, int}-->test
es a@

</smokeAlgName>
<wasteGasAlgName min="1" max="128">
<!--ro, opt, string, algorithm library version name of waste gas detection, attr:min{opt, string},max{opt, string}-->test
Fr rc

</wasteGasAlgName>
<greyScaleAlarmAlgName min="1" max="128">
y ema

<!--ro, opt, string, algorithm library version name of greyscale alarm, attr:min{opt, string},max{opt, string}-->test
</greyScaleAlarmAlgName>
</AlgVersionInfo>
<isSupportFaceThermometry>
<!--ro, opt, bool, whether supports temperature screening configuration, desc:related URI: /ISAPI/Thermal/channels/<ID>/faceThermometry/capabilities--
os fr

>true
</isSupportFaceThermometry>
ad on

<isSupportThermalBlackBody>
<!--ro, opt, bool, whether the device supports configuring black body parameters of thermal imaging, desc:related URI:
/ISAPI/Thermal/channels/<ID>/blackBody/capabilities-->true
el .c

</isSupportThermalBlackBody>
<isSupportThermalStreamParam>
<!--ro, opt, bool, whether the device supports configuring stream parameters of thermal imaging, desc:related URI:
ez

/ISAPI/Thermal/channels/<ID>/streamParam/capabilities-->true
</isSupportThermalStreamParam>
en

<isSupportBodyTemperatureCompensation>
<!--ro, opt, bool, whether the device supports temperature compensation configuration, desc:related URI:
/ISAPI/Thermal/channels/<ID>/bodyTemperatureCompensation/capabilities-->true
im

</isSupportBodyTemperatureCompensation>
<isSupportClickToThermometry>
ng

<!--ro, opt, bool, whether the device supports click-to-thermometry, desc:related URI: ISAPI/Thermal/channels/<ID>/clickToThermometry/initialization--
Aj

>true
Co

</isSupportClickToThermometry>
<isSupportThermometryHistorySearch>
<!--ro, opt, bool, whether the device supports searching for historical temperature data, desc:related URI:
/ISAPI/Thermal/channels/<ID>/historyTemperature/capabilities-->true
</isSupportThermometryHistorySearch>
<isSupportThermometryShieldMask>
<!--ro, opt, bool, whether the device supports configuring shield parameters of thermography region, desc:related URI:
/ISAPI/Thermal/channels/<ID>/thermometryShieldMask/capabilities-->true
</isSupportThermometryShieldMask>
<isSupportTemperatureCorrection>
<!--ro, opt, bool, whether device supports temperature measurement correction, desc:related URI:
/ISAPI/Thermal/channels/<ID>/CorrectionParam/capabilities-->true
</isSupportTemperatureCorrection>
<isSupportBurningPrevention>
<!--ro, opt, bool, whether device supports burning prevention, desc:related URI: /ISAPI/Thermal/channels/<ID>/burningPrevention/capabilities-->true
</isSupportBurningPrevention>
<isSupportTemperatureCollection>
<!--ro, opt, bool, whether device supports temperature ANR, desc:related URI: ISAPI/Thermal/temperature/collection/capabilities?format=json-->true
</isSupportTemperatureCollection>
<isSupportJpegPicWithAppendData>
<!--ro, opt, bool, whether the device supports capturing pictures, desc:related URI: /ISAPI/Thermal/channels/<ID>/thermometry/jpegPicWithAppendData?
format=json-->true
</isSupportJpegPicWithAppendData>
<isSupportRealTimethermometryForHTTP>
<isSupportRealTimethermometryForHTTP>
<!--ro, opt, bool, whether device supports real-time temperature measurement. If supports,it is returned and its value is true,if not support,it is
not returned, desc:related URI: /ISAPI/Thermal/channels/<ID>/thermometry/realTimethermometry/rules?format=json-->true
</isSupportRealTimethermometryForHTTP>
<isSupportthermometryOffLineCapture>
<!--ro, opt, bool, whether the device supports capturing pictures offline, desc:related URI: /ISAPI/Thermal/channels/<ID>/thermometry/OffLineCapture?
format=json-->true
</isSupportthermometryOffLineCapture>
<isSupportShipsDetectionWithScene>
<!--ro, opt, bool, whether the device supports ship detection by scene, desc:related URI: /ISAPI/Thermal/channels/<ID>/shipsDetection/capabilities?
format=json-->true
</isSupportShipsDetectionWithScene>
<isSupportWasteGasDetection>
<!--ro, opt, bool, whether the device supports waste gas monitoring-->true
</isSupportWasteGasDetection>
<isSupportGreyScaleAlarm>
<!--ro, opt, bool, whether the device supports the gray scale alarm-->true

m
</isSupportGreyScaleAlarm>

co
<isSupportFaceSnapThermometry>
<!--ro, opt, bool, whether the device supports temperature screening when capturing face pictures-->true
</isSupportFaceSnapThermometry>

a.
<isSupportThermalTemperatureCorrect>
<!--ro, opt, bool, whether device supports temperature calibration, desc:related URI: /ISAPI/Thermal/channels/<ID>/temperatureCorrect?format=json--

C. arc
>true
</isSupportThermalTemperatureCorrect>
<isSupportThermalVehicleDetection>
<!--ro, opt, bool, whether the device supports thermal imaging vehicle detection-->true

s, em
</isSupportThermalVehicleDetection>
<isSupportSensorParam>

A
<!--ro, opt, bool, whether the device supports configuring the sensor temperature measurement parameters, desc:related URI:

no fr
/ISAPI/Thermal/channels/<channelID>/thermometry/sensorParam/capabilities?format=json-->true
</isSupportSensorParam>
<isSupportTemperatureIntervalMeasurement>

ri on
<!--ro, opt, bool, whether the device supports temperature range detection-->true
</isSupportTemperatureIntervalMeasurement>

Ma oc
<isSupportIndustryThermometryTemperatureRise>
<!--ro, opt, bool, whether the device supports setting temperature rise compensation in thermal industrial temperature measurement, desc:related URI:
/ISAPI/Thermal/channels/<ID>/industryThermometry/temperatureRise?format=json-->true
up
</isSupportIndustryThermometryTemperatureRise>
<isSupportThermalDataLinkInfo>
<!--ro, opt, bool, whether the device supports getting the temperature data link information, desc:related URI: /ISAPI/Thermal/thermalDataLinkInfo?
co gr

format=json; /ISAPI/Thermal/thermalDataLinkStatus?format=json-->true
</isSupportThermalDataLinkInfo>
<isSupportTemperatureCompensationCalib>
es a@

<!--ro, opt, bool, whether the device supports temperature compensation, desc:related URI:
/ISAPI/Thermal/channels/<channelID>/temperatureCompensationCalibration?format=json-->true
Fr rc

</isSupportTemperatureCompensationCalib>
s

<isSupportWebDisplayPixelToPixelParam>
<!--ro, opt, bool, whether the web needs to display full-screen temperature parameters, desc:related URI:
y ema

/ISAPI/Thermal/channels/<channelID>/thermometry/pixelToPixelParam/capabilities-->true
</isSupportWebDisplayPixelToPixelParam>
<isSupportThermalInspection>
<!--ro, opt, bool, whether the device supports thermal patrol, desc:related URI: /ISAPI/Thermal/inspection/capabilities?format=json-->true
os fr

</isSupportThermalInspection>
<isSupportBlackBodyTemperature>
<!--ro, opt, bool, whether the device supports searching for black body center point temperature, desc:related URI:
ad on

/ISAPI/Thermal/channels/<channelID>/blackBodyTemperature?format=json-->true
</isSupportBlackBodyTemperature>
el .c

<isSupportExportThermalCalibrationFile>
<!--ro, opt, bool, whether the device supports exporting the temperature calibration file, desc:POST /ISAPI/Thermal/ExportThermalCalibrationFile?
format=json-->true
ez

</isSupportExportThermalCalibrationFile>
<isSupportSearchSmokeAndFireDetection>
<!--ro, opt, bool, whether the device supports searching for history records of smoke and fire detection, desc:POST
en

/ISAPI/Thermal/fireDetection/SearchSmokeAndFireDetection?format=json-->true
</isSupportSearchSmokeAndFireDetection>
im

<isSupportColumnOven>
<!--ro, opt, bool, whether the device supports column oven parameters, desc:GET/PUT /ISAPI/OPCA/GC/ColumnOven?format=json-->true
ng

</isSupportColumnOven>
Aj

<isSupportImportThermalCalibrationFile>
<!--ro, opt, bool, whether the device supports importing the temperature calibration file, desc:POST /ISAPI/Thermal/ImportThermalCalibrationFile?
Co

format=json-->true
</isSupportImportThermalCalibrationFile>
<isSupportThermalCalibrationFileCreatParam>
<!--ro, opt, bool, whether the device supports the parameters of generating temperature calibration file, desc:GET
/ISAPI/Thermal/ThermalCalibrationFileCreatParam?format=json-->true
</isSupportThermalCalibrationFileCreatParam>
<isSupportNormalRuleParams>
<!--ro, opt, bool, whether the device supports the parameters of smoke and fire detection normal rules, desc:GET/PUT
/ISAPI/Thermal/fireDetection/channels/<channelID>/NormalRuleParams?format=json-->true
</isSupportNormalRuleParams>
<isSupportEnvironmentTemperatureMonitorScheduleParams>
<!--ro, opt, bool, whether the device supports the parameters of environment temperature monitor arming schedule, desc:GET/PUT
/ISAPI/Thermal/EnvironmentTemperatureMonitorScheduleParams?format=json-->true
</isSupportEnvironmentTemperatureMonitorScheduleParams>
<isSupportEnvironmentTemperatureMonitorParam>
<!--ro, opt, bool, whether the device supports the parameters of environment temperature monitoring, desc:GET/PUT
/ISAPI/Thermal/EnvironmentTemperatureMonitorParam?format=json-->true
</isSupportEnvironmentTemperatureMonitorParam>
<isSupportEnvironmentTemperatureMonitorTriggerParams>
<!--ro, opt, bool, whether the device supports the parameters of environment temperature monitoring linkage action, desc:GET/PUT
/ISAPI/Thermal/EnvironmentTemperatureMonitorTriggerParams?format=json-->true
</isSupportEnvironmentTemperatureMonitorTriggerParams>
<isSupportSearchAsynThermalInspectionTaskTestPoint>
<!--ro, opt, bool, whether the device supports searching for information of specified asynchronous thermal inspection point, desc:POST
/ISAPI/Thermal/SearchAsynThermalInspectionTaskTestPoint?format=json-->true
</isSupportSearchAsynThermalInspectionTaskTestPoint>
<isSupportSearchAsynThermalInspectionTask>
<!--ro, opt, bool, whether the device supports searching for specified asynchronous thermal inspection task, desc:POST
/ISAPI/Thermal/SearchAsynThermalInspectionTask?format=json-->true
</isSupportSearchAsynThermalInspectionTask>
<isSupportAddAsynThermalInspectionTaskTestPoint>
<!--ro, opt, bool, whether the device supports adding information of specified asynchronous thermal inspection point, desc:POST
/ISAPI/Thermal/AddAsynThermalInspectionTaskTestPoint?format=json-->true
</isSupportAddAsynThermalInspectionTaskTestPoint>
<isSupportAddAsynThermalInspectionTask>
<!--ro, opt, bool, whether the device supports adding asynchronous thermal inspection task, desc:POST /ISAPI/Thermal/AddAsynThermalInspectionTask?
format=json-->true
</isSupportAddAsynThermalInspectionTask>
<isSupportImportAsynThermalInspectionTaskBaseMap>

m
<!--ro, opt, bool, whether the device supports importing asynchronous thermal inspection task base map, desc:POST

co
/ISAPI/Thermal/ImportAsynThermalInspectionTaskBaseMap?format=json-->true
</isSupportImportAsynThermalInspectionTaskBaseMap>
<isSupportShutterFreeze>

a.
<!--ro, opt, bool, whether the device supports freezing the shutter, desc:GET/PUT /ISAPI/Thermal/channels/<channelID>/ShutterFreeze?format=json-->true
</isSupportShutterFreeze>
</ThermalCap>

C. arc
<WLAlarmCap>
<!--ro, opt, object, wireless alarm capability-->
<isSupportTeleControl>
<!--ro, opt, bool, whether the device supports remote control-->true

s, em
</isSupportTeleControl>
<isSupportPIR>

A
<!--ro, opt, bool, whether the device supports PIR configuration-->true

no fr
</isSupportPIR>
<isSupportWLSensors>

ri on
<!--ro, opt, bool, N/A-->true
</isSupportWLSensors>
<isSupportCallHelp>

Ma oc
<!--ro, opt, bool, whether the device supports calling for help-->true
</isSupportCallHelp>
<WLSensorsNum>
up
<!--ro, opt, int, N/A-->1
</WLSensorsNum>
co gr

</WLAlarmCap>
<isSupportGIS>
<!--ro, opt, bool, whether the device supports GIS, desc:related URI: /ISAPI/GIS/channels-->true
es a@

</isSupportGIS>
<isSupportCompass>
<!--ro, opt, bool, whether the device supports compass configuration, desc:related URI: /ISAPI/Compass/channels/<ID>/capabilities-->true
Fr rc

</isSupportCompass>
<isSupportRoadInfoOverlays>
y ema

<!--ro, opt, bool, whether the device supports overlaying the lane information-->true
</isSupportRoadInfoOverlays>
<isSupportFaceCaptureStatistics>
<!--ro, opt, bool, whether the device supports face capture statistics, desc:related URI:
os fr

/ISAPI/Intelligent/channels/<ID>/faceCaptureStatistics/search-->true
</isSupportFaceCaptureStatistics>
<isSupportElectronicsEnlarge>
ad on

<!--ro, opt, bool, whether the device supports electronics enlarge-->true


</isSupportElectronicsEnlarge>
<isSupportRemoveStorage>
el .c

<!--ro, opt, bool, whether the device supports remote storage-->true


</isSupportRemoveStorage>
ez

<isSupportCloud>
<!--ro, opt, bool, whether the device supports cloud storage-->true
</isSupportCloud>
en

<isSupportRecordHost>
<!--ro, opt, bool, whether the device supports configuring the education sharing server, desc:related URI: /ISAPI/RecordHost/capabilities-->true
</isSupportRecordHost>
im

<isSupportViewshedOverlay>
<!--ro, opt, bool, whether the device supports overlaying viewshed camera target, desc:related URI:
ng

/ISAPI/System/Video/inputs/channels/<ID>/viewshedOverlay-->true
Aj

</isSupportViewshedOverlay>
Co

<isSupportGPSLabelTracking>
<!--ro, opt, bool, whether the device supports GPS tag tracking, desc:related URI:/ISAPI/GIS/channels/<ID>/GPSLabelTracking?format=json-->true
</isSupportGPSLabelTracking>
<isSupportEagleEye>
<!--ro, opt, bool, whether the device supports the PanoVu series camera-->true
</isSupportEagleEye>
<isSupportPanorama>
<!--ro, opt, bool, whether the device supports panoramic mode-->true
</isSupportPanorama>
<isSupportFirmwareVersionInfo>
<!--ro, opt, bool, whether the device supports displaying the firmware version information-->true
</isSupportFirmwareVersionInfo>
<isSupportExternalWirelessServer>
<!--ro, opt, bool, whether the device supports external wireless servers: true (support)-->true
</isSupportExternalWirelessServer>
<isSupportSetupCalibration>
<!--ro, opt, bool, whether the device supports configuring calibration-->true
</isSupportSetupCalibration>
<isSupportGetmutexFuncErrMsg>
<!--ro, opt, bool, whether the device supports the mutual exclusion information-->true
</isSupportGetmutexFuncErrMsg>
<isSupportTokenAuthenticate>
<!--ro, opt, bool, whether the device supports token authentication-->true
</isSupportTokenAuthenticate>
</isSupportTokenAuthenticate>
<isSupportStreamDualVCA>
<!--ro, opt, bool, whether the device supports overlaying intelligent private data on the stream, desc:related URI: in the
/ISAPI/Intelligent/channels/<ID>/intelliResource; corresponding node: <isOverlapIntelli>-->true
</isSupportStreamDualVCA>
<isSupportLaserSpotManual>
<!--ro, opt, bool, whether the device supports configuring laser light spot-->true
</isSupportLaserSpotManual>
<isSupportRTMP>
<!--ro, opt, bool, whether the device supports RTMP configuration, desc:related URI: /ISAPI/Streaming/channels/<ID>/RTMPCfg/capabilities-->true
</isSupportRTMP>
<isSupportTraffic>
<!--ro, opt, bool, traffic service capability-->true
</isSupportTraffic>
<isSupportLaserSpotAdjustment>
<!--ro, opt, bool, adjust the size of laser spot, desc:related URI: /ISAPI/Image/channels/<ID>/laserLight/laserSpotAdjustment/capabilities-->true

m
</isSupportLaserSpotAdjustment>
<VideoIntercomCap>

co
<!--ro, opt, object, video intercom capability, desc:related URI: /ISAPI/VideoIntercom/capabilities-->
<isSupportSceneManage>
<!--ro, opt, bool, scene management (the configuration port needs to be switched according to various scenes)-->true

a.
</isSupportSceneManage>
<isSupportDeviceId>

C. arc
<!--ro, opt, bool, whether the device supports device ID-->true
</isSupportDeviceId>
<isSupportOperationTime>
<!--ro, opt, bool, whether the device supports the operation time-->true

s, em
</isSupportOperationTime>
<isSupportCallerInfo>

A
<!--ro, opt, bool, whether the device supports the information management of the calling persons-->true

no fr
</isSupportCallerInfo>
<isSupportCallSignal>
<!--ro, opt, bool, whether the device supports the call signaling interaction, desc:related URI: /ISAPI/VideoIntercom/callSignal?format=json-->true

ri on
</isSupportCallSignal>
<isSupportCallStatus>

Ma oc
<!--ro, opt, bool, whether the device supports getting call status, desc:related URI: /ISAPI/VideoIntercom/callStatus?format=json-->true
</isSupportCallStatus>
<isSupportCallElevator>
up
<!--ro, opt, bool, whether the device supports calling for elevator-->true
</isSupportCallElevator>
<isSupportRelatedDeviceAdress>
co gr

<!--ro, opt, bool, whether the device supports linking device address-->true
</isSupportRelatedDeviceAdress>
es a@

<isSupportCardSectorCheck>
<!--ro, opt, bool, sector encryption verification-->true
</isSupportCardSectorCheck>
Fr rc

<isSupportKeyCfg>
<!--ro, opt, bool, configuration for pressing button to call for resident-->true
</isSupportKeyCfg>
y ema

<isSupportWorkModeCfg>
<!--ro, opt, bool, whether the device supports configuring the working mode, desc:related URI: URL/ISAPI/VideoIntercom/workMode/capabilities-->true
</isSupportWorkModeCfg>
<isSupportSystemSwitchCfg>
os fr

<!--ro, opt, bool, configuring the switch of video intercom system-->true


</isSupportSystemSwitchCfg>
<isSupportPrivilegePasswordStatus>
ad on

<!--ro, opt, bool, getting the status of the device's permission password-->true
</isSupportPrivilegePasswordStatus>
el .c

<isSupportSmartHomeRoomsCfg>
<!--ro, opt, bool, whether the device supports configuring room information-->true
</isSupportSmartHomeRoomsCfg>
ez

<isSupportSmartHomeDevices>
<!--ro, opt, bool, whether the device supports intelligent devices management-->true
</isSupportSmartHomeDevices>
en

<isSupportScenesCfg>
<!--ro, opt, bool, whether the device supports scene configuration (adding, deleting, editing and searching for)-->true
im

</isSupportScenesCfg>
<isSupportNameModify>
ng

<!--ro, opt, bool, whether the device supports editing the zone name-->true
Aj

</isSupportNameModify>
<isSupportElevatorControlCfg>
Co

<!--ro, opt, bool, whether the device supports elevator control-->true


</isSupportElevatorControlCfg>
<isSupportPrivilegePassword>
<!--ro, opt, bool, whether the device supports the enable password-->true
</isSupportPrivilegePassword>
<isSupportSubModules>
<!--ro, opt, bool, whether the device supports sub-module management-->true
</isSupportSubModules>
<isSupportIssueCards>
<!--ro, opt, bool, whether the device supports configuring the card issuing function of the master card-->true
</isSupportIssueCards>
<isSupportSendCardCfg>
<!--ro, opt, bool, whether the door station supports configuring card issuing function-->true
</isSupportSendCardCfg>
<isSupportRingBackTone>
<!--ro, opt, bool, whether the device supports importing the ring back tone-->true
</isSupportRingBackTone>
<isSupportCallPriority>
<!--ro, opt, bool, whether the device supports calling permission-->true
</isSupportCallPriority>
<isSupportPhoneCfg>
<!--ro, opt, bool, whether the device supports configuring resident phones-->true
</isSupportPhoneCfg>
<isSupportWatchPoint>
<!--ro, opt, bool, whether the device supports watch point, desc:/ISAPI/VideoIntercom/WatchPoint-->true
</isSupportWatchPoint>
<isSupportVoiceConfiguration>
<!--ro, opt, bool, whether the device supports the configuration of enabling the voice recognition and prompt-->true
</isSupportVoiceConfiguration>
<isSupportSubModulesCfg>
<!--ro, opt, bool, whether the device supports configuring editing the sub module parameters-->true
</isSupportSubModulesCfg>
<isSupportDisplayRegion>
<!--ro, opt, bool, whether the device supports configuring the area to be displayed-->true
</isSupportDisplayRegion>
<isSupportUpdateData>
<!--ro, opt, bool, whether the device supports importing upgrade files-->true
</isSupportUpdateData>
<isSupportUpdateStrategy>

m
<!--ro, opt, bool, whether the device supports upgrade configuration-->true

co
</isSupportUpdateStrategy>
<isSupportMetaInfo>
<!--ro, opt, bool, whether the device supports getting the information of upgrade files-->true

a.
</isSupportMetaInfo>
<isSupportStreamAbility>
<!--ro, opt, bool, whether the device supports IPC management-->true

C. arc
</isSupportStreamAbility>
<platform opt="R0,R1,S29">
<!--ro, opt, enum, platform type, subType:string, attr:opt{req, string}, desc:"R0", "R1"; it will be returned if the device supports-->R0
</platform>

s, em
<isSupportSecurityMode>

A
<!--ro, opt, bool, whether the device supports switching the version of security protocols-->true

no fr
</isSupportSecurityMode>
<isSupportDeviceCommunication>
<!--ro, opt, bool, whether the device supports configuring the parameters of device group-net communication-->true

ri on
</isSupportDeviceCommunication>
<isSupportAutoSync>
<!--ro, opt, bool, whether the device supports automatically synchronous parameters configuration-->true

Ma oc
</isSupportAutoSync>
<isSupportDifferentKeystrokes>
up
<!--ro, opt, bool, whether the device supports distinguishing long press and short press-->true
</isSupportDifferentKeystrokes>
<isSupportKeyCfgWeekPlan>
co gr

<!--ro, opt, bool, the week schedule configuration for pressing to call-->true
</isSupportKeyCfgWeekPlan>
<isSupportKeyCfgHolidayPlan>
es a@

<!--ro, opt, bool, the holiday schedule configuration for pressing to call-->true
</isSupportKeyCfgHolidayPlan>
<isSupportKeyCfgHolidayGroup>
Fr rc

<!--ro, opt, bool, the holiday group configuration for pressing to call-->true
</isSupportKeyCfgHolidayGroup>
y ema

<isSupportKeyCfgPlanTemplate>
<!--ro, opt, bool, the schedule template configuration for pressing to call-->true
</isSupportKeyCfgPlanTemplate>
<isSupportCallCfg>
os fr

<!--ro, opt, bool, device call configuration-->true


</isSupportCallCfg>
<isSupportAccessParams>
ad on

<!--ro, opt, bool, the application access parameters-->true


</isSupportAccessParams>
<isSupportTransmitRequestEventConfirm>
el .c

<!--ro, opt, bool, response to the transparent transmission request-->true


</isSupportTransmitRequestEventConfirm>
ez

<isSupportIncomingCallLinkage>
<!--ro, opt, bool, whether the device supports configuring incoming calls linkage-->true
</isSupportIncomingCallLinkage>
en

<isSupportAdbControl>
<!--ro, opt, bool, whether the device supports remotely enabling and disabling ADB-->true
</isSupportAdbControl>
im

<isSupportProtocolFileManage>
ng

<!--ro, opt, bool, whether the device supports the management of the protocol notice files, desc:/ISAPI/VideoIntercom/protocolFileManage/capabilities?
Aj

format=json-->true
</isSupportProtocolFileManage>
Co

<isSupportStreamSwitch>
<!--ro, opt, bool, whether the device supports stream switch, desc:/ISAPI/VideoIntercom/streamSwitch/capabilities?format=json-->true
</isSupportStreamSwitch>
<isSupportKeywordAudioRecognition>
<!--ro, opt, bool, whether the device supports keyword voice recognition, desc:/ISAPI/VideoIntercom/keywordAudioRecognition/capabilities?format=json--
>true
</isSupportKeywordAudioRecognition>
<isSupportOneWaySpeaking>
<!--ro, opt, bool, whether the device supports speaking loud, desc:true (support), this node is not returned (not support)-->true
</isSupportOneWaySpeaking>
<isSupportPositionInfo>
<!--ro, opt, bool, whether the device supports configuring the device location information, desc:/ISAPI/VideoIntercom/positionInfo?format=json-->true
</isSupportPositionInfo>
<isSupportElevatorControlDisplay>
<!--ro, opt, bool, whether the device supports configuring displaying elevator control, desc:/ISAPI/VideoIntercom/elevatorControlDisplay?format=json--
>true
</isSupportElevatorControlDisplay>
<isSupportRingManage>
<!--ro, opt, bool, whether the device supports ring tone management, desc:related URI: /ISAPI/VideoIntercom/ringTone?format=json;
/ISAPI/VideoIntercom/ringTone/<ringID>?format=json-->true
</isSupportRingManage>
<isSupportPasswordAuthentication>
<!--ro, opt, bool, whether the device supports verifying the video intercom password, desc:related URI:
/ISAPI/VideoIntercom/passwordAuthentication/capabilitie-->true
/ISAPI/VideoIntercom/passwordAuthentication/capabilitie-->true
</isSupportPasswordAuthentication>
<isSupportAlarmControlByPhone>
<!--ro, opt, bool, whether the device supports phone arming control, desc:related URI: /ISAPI/SecurityCP/AlarmControlByPhone/capabilities-->true
</isSupportAlarmControlByPhone>
<isSupportZoneCfgByScene>
<!--ro, opt, bool, whether the device supports configuring the zones parameter by scene, desc:related URI:
/ISAPI/SecurityCP/BasicParam/sceneZoneCfg/capabilities-->true
</isSupportZoneCfgByScene>
<isSupportAppKeyConfiguration>
<!--ro, opt, bool, whether the device supports configuring APPKey, desc:related URI: /ISAPI/VideoIntercom/AppKeyConfiguration/capabilities-->true
</isSupportAppKeyConfiguration>
<isSupportIntercomProtocolChange>
<!--ro, opt, bool, whether the device supports configuring the switch of device VoIP protocols, desc:related URI:
/ISAPI/VideoIntercom/IntercomProtocolType/capabilities-->true
</isSupportIntercomProtocolChange>

m
<isSupportGetAnnouncementMessage>
<!--ro, opt, bool, whether the device supports getting announcement message, desc:related URI: /ISAPI/VideoIntercom/AnnouncementMessage/capabilities--

co
>true
</isSupportGetAnnouncementMessage>

a.
<isSupportGetDeployInfo>
<!--ro, opt, bool, whether the device supports getting arming information, desc:related URI: /ISAPI/AccessControl/DeployInfo/capabilities-->true
</isSupportGetDeployInfo>

C. arc
<detectorType opt="panicButton,magneticContact,smokeDetector,activeInfraredDetector,passiveInfraredDetector,combustibleGasDetector,doorbell">
<!--ro, opt, string, detector types supported by the device, attr:opt{req, string}, desc:"panicButton" (panic button), "magneticContact" (magnetic
contact), "smokeDetector" (smoke detector), "activeInfraredDetector" (active infrared detecor), "passiveInfraredDetector" (passice infrared detector),
"combustibleGasDetector" (combustible gas detector)-->test

s, em
</detectorType>
<isSupportBroadcastRealtime>

A
<!--ro, opt, bool, whether the device supports real-time audio broadcast-->true

no fr
</isSupportBroadcastRealtime>
<isSupportOrganizationNodes>

ri on
<!--ro, opt, bool, whether the device supports organization architecture management-->true
</isSupportOrganizationNodes>
<isSupportAudioPlayStatus>

Ma oc
<!--ro, opt, bool, whether the device supports uploading the audio playing status-->true
</isSupportAudioPlayStatus>
<isSupportDeviceIdAnalysisRuleCfg>
up
<!--ro, opt, bool, whether the device supports configuring the analysis rule of the device No. (related URI:
/ISAPI/VideoIntercom/AnalysisRuleCfg/capabilities?format=json)-->true
</isSupportDeviceIdAnalysisRuleCfg>
co gr

<isSupportOperationTimeByChannel>
<!--ro, opt, bool, whether the device supports configuring the operation time by channel-->true
es a@

</isSupportOperationTimeByChannel>
<isSupportCallAuthorization>
<!--ro, opt, bool, whether the device supports configuring permission for incoming calls, desc:related URI:
Fr rc

/ISAPI/VideoIntercom/CallAuthorization/capbilities?format=json-->true
</isSupportCallAuthorization>
<isSupportRecordControl>
y ema

<!--ro, opt, bool, whether the device supports audio/video control, desc:related URI: /ISAPI/VideoIntercom/recordControl/capabilities?format=json--
>true
</isSupportRecordControl>
<isSupportTrusteeship>
os fr

<!--ro, opt, bool, whether the device supports configuring trusteeship, desc:related URI: /ISAPI/VideoIntercom/trusteeship/capabilities?format=json--
>true
ad on

</isSupportTrusteeship>
<isSupportAnalogIndoorStation>
<!--ro, opt, bool, whether the device supports the management of the analog indoor station, desc:related URI:
el .c

/ISAPI/VideoIntercom/analogIndoorStation/capabilities?format=json-->true
</isSupportAnalogIndoorStation>
<isSupportImportPartitions>
ez

<!--ro, opt, bool, whether the device supports importing the terminal list, desc:(partition list for the paging microphone devices distributed by the
platform) (Related URI: /ISAPI/VideoIntercom/ImportTerminals/capabilities?format=json)-->true
en

</isSupportImportPartitions>
<isSupportBroadcastPlan>
<!--ro, opt, bool, whether the device supports full application of schedule broadcast, desc:related URI:
im

ISAPI/VideoIntercom/broadcast/plan/capabilities?format=json-->true
</isSupportBroadcastPlan>
ng

<isSupportBroadcastPlanSearch>
Aj

<!--ro, opt, bool, whether the device supports searching for full schedule broadcast, desc:related URI: /ISAPI/VideoIntercom/broadcast/planSearch?
format=json-->true
Co

</isSupportBroadcastPlanSearch>
<isSupportBroadcastPlanPause>
<!--ro, opt, bool, whether the device supports pausing full schedule broadcast, desc:related URI: /ISAPI/VideoIntercom/broadcast/plan/pause?
format=json-->true
</isSupportBroadcastPlanPause>
<isSupportBroadcastPlanResume>
<!--ro, opt, bool, whether the device supports restoring full schedule broadcast, desc:related URI: /ISAPI/VideoIntercom/broadcast/plan/resume?
format=json-->true
</isSupportBroadcastPlanResume>
<isSupportBroadcastPlanTest>
<!--ro, opt, bool, whether the device supports the test run of full schedule broadcast, desc:related URI: /ISAPI/VideoIntercom/broadcast/plan/test?
format=json-->true
</isSupportBroadcastPlanTest>
<isSupportBroadcastPlanEx>
<!--ro, opt, bool, whether the device supports incremental application of schedule broadcast, desc:related URI:
/ISAPI/VideoIntercom/broadcast/planEx/capabilities?format=json-->true
</isSupportBroadcastPlanEx>
<isSupportBroadcastPlanExSearch>
<!--ro, opt, bool, whether the device supports searching for incremental schedule broadcast, desc:related URI:
/ISAPI/VideoIntercom/broadcast/planExSearch?format=json-->true
</isSupportBroadcastPlanExSearch>
<isSupportBroadcastPlanModify>
<!--ro, opt, bool, whether the device supports editing a single schedule broadcast, desc:it is valid only during incremental application-->true
<!--ro, opt, bool, whether the device supports editing a single schedule broadcast, desc:it is valid only during incremental application-->true
</isSupportBroadcastPlanModify>
<isSupportBroadcastPlanDelete>
<!--ro, opt, bool, whether the device supports deleting a single schedule broadcast, desc:it is valid only during incremental application-->true
</isSupportBroadcastPlanDelete>
<isSupportAudioInPlayCfg>
<!--ro, opt, bool, whether the device supports the configuration of playing the audio input sources of the broadcast, desc:URI for getting the
capability: /ISAPI/VideoIntercom/broadcast/AudioInPlayCfg/capabilities?format=json-->true
</isSupportAudioInPlayCfg>
<isSupportSearchWardBedInfo>
<!--ro, opt, bool, whether the device supports searching for ward bed information, desc:URI for getting the capability:
/ISAPI/VideoIntercom/searchWardBedInfo/capabilities?format=json. It is used for the main station to search for whether the bed connected to the sub machine
in the ward is already occupied-->true
</isSupportSearchWardBedInfo>
<isSupportPatient>
<!--ro, opt, bool, whether the device supports applying patient information, desc:URI for getting the capability:
/ISAPI/VideoIntercom/medical/patient/capabilities?format=json-->true

m
</isSupportPatient>

co
<isSupportIntroduction>
<!--ro, opt, bool, whether the device supports applying the medical introduction, desc:URI for getting the capability:
/ISAPI/VideoIntercom/medical/introduction/capabilities?format=json-->true

a.
</isSupportIntroduction>
<isSupportConstantVoltage>

C. arc
<!--ro, opt, bool, whether the device supports constant voltage broadcast, desc:URI for getting the capability:
/ISAPI/VideoIntercom/broadcast/ConstantVoltage/capabilities?format=json-->true
</isSupportConstantVoltage>
<isSupportRecordMode>
<!--ro, opt, bool, whether it supports configuring recording mode, desc:URI for getting the capability: /ISAPI/VideoIntercom/RecordMode/capabilities?

s, em
format=json-->true

A
</isSupportRecordMode>

no fr
<isSupportCallForwarding>
<!--ro, opt, bool, whether the device supports active call transfer, desc:URI for getting the capability:
/ISAPI/VideoIntercom/callForwarding/capabilities?format=json-->true

ri on
</isSupportCallForwarding>
<isSupportMediaLibrary>
<!--ro, opt, bool, whether the device supports applying media library information, desc:URI for getting the capability:

Ma oc
/ISAPI/VideoIntercom/broadcast/MediaLibrary/capabilities?format=json-->true
</isSupportMediaLibrary>
up
<isSupportBroadcastControl>
<!--ro, opt, bool, whether the device supports configuring broadcast control parameters, desc:URI for getting the capability:
/ISAPI/VideoIntercom/broadcast/control/capabilities?format=json-->true
co gr

</isSupportBroadcastControl>
<isSupportGetImportPartitions>
<!--ro, opt, bool, whether the device supports getting partition list, desc:POST /ISAPI/VideoIntercom/broadcast/GetImportPartitions?format=json-->true
es a@

</isSupportGetImportPartitions>
<isSupportSearchMediaLibrary>
Fr rc

<!--ro, opt, bool, whether the device supports searching media library, desc:POST /ISAPI/VideoIntercom/broadcast/SearchMediaLibrary?format=json-->true
s

</isSupportSearchMediaLibrary>
<isSupportImportPartitionsBatch>
y ema

<!--ro, opt, bool, whether the device supports batch importing of partitions, desc:PUT /ISAPI/VideoIntercom/broadcast/ImportPartitionsBatch?
format=json-->true
</isSupportImportPartitionsBatch>
<isSupportMediaLibraryBatch>
os fr

<!--ro, opt, bool, whether the device supports batch applying of media library information, desc:PUT /ISAPI/VideoIntercom/broadcast/MediaLibraryBatch?
format=json-->true
</isSupportMediaLibraryBatch>
ad on

<isSupportPlanScheme>
<!--ro, opt, bool, whether the device supports broadcast schedules, desc:GET /ISAPI/VideoIntercom/broadcast/PlanScheme/capabilities?format=json-->true
el .c

</isSupportPlanScheme>
<isSupportRealTimeInsertion>
<!--ro, opt, bool, whether the device supports real-time cut-in, desc:POST /ISAPI/VideoIntercom/broadcast/RealTimeInsertion?format=json-->true
ez

</isSupportRealTimeInsertion>
</VideoIntercomCap>
<SecurityCPCapabilities>
en

<!--ro, opt, object, [TBC], desc:related URI: /ISAPI/SecurityCP/capabilities?format=json-->true


</SecurityCPCapabilities>
<isSupportSafetyCabin>
im

<!--ro, opt, bool, safety cabinet controller, desc:related URI: /ISAPI/SafetyCabin/capabilities-->true


ng

</isSupportSafetyCabin>
Aj

<isSupportAcsUpdate>
<!--ro, opt, bool, whether the device supports peripheral module upgrade (true, support), desc:related URI: /ISAPI/System/AcsUpdate/capabilities-->true
Co

</isSupportAcsUpdate>
<isSupportSecurityCP>
<!--ro, opt, bool, N/A-->true
</isSupportSecurityCP>
<isSupportPEA>
<!--ro, opt, bool, the host capability of one-push alarm-->true
</isSupportPEA>
<isSupportCurrentLock>
<!--ro, opt, bool, whether the device supports the configuration of locking current-->true
</isSupportCurrentLock>
<isSupportGuardAgainstTheft>
<!--ro, opt, bool, whether the device supports configuring device guard against theft, desc:related URI: /ISAPI/System/guardAgainstTheft/capabilities--
>true
</isSupportGuardAgainstTheft>
<isSupportPicInfoOverlap>
<!--ro, opt, bool, whether the device supports overlaying pictures and texts-->true
</isSupportPicInfoOverlap>
<isSupportPlay>
<!--ro, opt, bool, shielded live view-->true
</isSupportPlay>
<isSupportPlayback>
<!--ro, opt, bool, shielded playback-->true
</isSupportPlayback>
<UHFRFIDReader>
<UHFRFIDReader>
<!--ro, opt, object, capability supported by the RFID reader-->
<isSupportBasicInformation>
<!--ro, opt, bool, whether the device supports the basic parameters of the reader-->true
</isSupportBasicInformation>
<isSupportHardDiskStorageTest>
<!--ro, opt, bool, whether the device supports disk storage performance test of the reader-->true
</isSupportHardDiskStorageTest>
<isSupportCarReaderConfig>
<!--ro, opt, bool, whether the device supports configuring the parameters of the electronic license plate reader, desc:related URI:
/ISAPI/Traffic/UHFRFIDReader/carReaderConfig/capabilities?format=json-->true
</isSupportCarReaderConfig>
</UHFRFIDReader>
<isSupportMasterSlaveConfig>
<!--ro, opt, bool, whether the device supports configuring main and sub device, desc:related URI: /ISAPI/System/masterSlaveConfig?format=json-->true
</isSupportMasterSlaveConfig>

m
<isSupportIntelligentStructureAnalysis>
<!--ro, opt, bool, whether the device supports intelligent structuralization analysis, desc:related URI:

co
/ISAPI/Intelligent/structureAnalysis/capabilities-->true
</isSupportIntelligentStructureAnalysis>

a.
<isSupportIntelligentAnalysisEngines>
<!--ro, opt, bool, whether the device supports configuring the intelligent engine, desc:related URI: /ISAPI/Intelligent/analysisEngines/capabilities--
>true

C. arc
</isSupportIntelligentAnalysisEngines>
<PreviewDisplayNum>
<!--ro, opt, int, number of the browser live view window-->1
</PreviewDisplayNum>

s, em
<isSupportBoard opt="true,false">
<!--ro, opt, bool, whether the device supports related sub-board protocols, attr:opt{opt, string}-->true

A
</isSupportBoard>

no fr
<ResourceSwitch>
<!--ro, opt, object, configuration of resource conversion-->

ri on
<workMode opt="4KPreview,educationRecord">
<!--ro, req, string, the working mode: education record mode, attr:opt{opt, string}-->test
</workMode>

Ma oc
</ResourceSwitch>
<isSupportCustomStream>
<!--ro, opt, bool, whether the device supports custom stream, desc:related URI: /ISAPI/Streaming/channels/<ID>/customStream/capabilities-->true
up
</isSupportCustomStream>
<isSupportTriggerCapCheck>
co gr

<!--ro, opt, bool, it indicates that the capability of the URL (/ISAPI/Event/triggersCap) is already verified-->true
</isSupportTriggerCapCheck>
<isSupportChannelEventCap>
es a@

<!--ro, opt, bool, whether the device supports getting the event capability by channel, desc:related URI: /ISAPI/Event/channels/<ID>/capabilities-->true
</isSupportChannelEventCap>
<SensorCap>
Fr rc

<!--ro, opt, object, capability of configuring sensor parameters, desc:related URI: /ISAPI/System/Sensor/capabilities-->
<SensorNums>
y ema

<!--ro, opt, int, the maximum number of sensors that can be added-->1
</SensorNums>
<isSupportSensorPortConfiguration>
<!--ro, opt, bool, supports configuring the detection parameters-->true
</isSupportSensorPortConfiguration>
os fr

<isSupportSensorPortControl>
<!--ro, opt, bool, supports detection control-->true
ad on

</isSupportSensorPortControl>
<isSupportAcquireSensorStatus>
<!--ro, opt, bool, supports getting the real-time status of the sensor-->true
el .c

</isSupportAcquireSensorStatus>
<isSupportSearchSensorData>
<!--ro, opt, bool, supports searching the sensor data-->true
ez

</isSupportSearchSensorData>
</SensorCap>
en

<isSupportEncryption>
<!--ro, opt, bool, stream encryption capability-->true
</isSupportEncryption>
im

<isSupportTrial>
<!--ro, opt, bool, whether the device supports configuring inquest device-->true
ng

</isSupportTrial>
Aj

<isSupportSignInstrument>
Co

<!--ro, opt, bool, the capability of physical sign monitor-->true


</isSupportSignInstrument>
<isSupportLocate>
<!--ro, opt, bool, whether the device supports location configuration-->true
</isSupportLocate>
<isSupportVibration>
<!--ro, opt, bool, whether the device supports configuring vibration parameters-->true
</isSupportVibration>
<isSupportMixedTargetDetection>
<!--ro, opt, bool, whether the device supports multi-target-type detection events-->true
</isSupportMixedTargetDetection>
<SDCardCtrlCap>
<!--ro, opt, object, the remote control capability of the memory card-->
<isSupportIOCtrl>
<!--ro, opt, bool, whether the device supports the capability of control and command upgrade-->true
</isSupportIOCtrl>
<isSupportReadCardStatus>
<!--ro, opt, bool, whether the device supports the capability of card recognition operation-->true
</isSupportReadCardStatus>
<isSupportStartUpdate>
<!--ro, opt, bool, whether the device supports the capability of upgrade start control-->true
</isSupportStartUpdate>
<isSupportEndUpdate>
<!--ro, opt, bool, whether the device supports the capability of upgrade end control-->true
<!--ro, opt, bool, whether the device supports the capability of upgrade end control-->true
</isSupportEndUpdate>
<isSupportPowerCtrl>
<!--ro, opt, bool, whether the device supports the capability of power on and off control-->true
</isSupportPowerCtrl>
</SDCardCtrlCap>
<isSupportMutiChannelCalibration>
<!--ro, opt, bool, whether the device supports multi-channel calibration-->true
</isSupportMutiChannelCalibration>
<isSupportElevatorFloorCalibration>
<!--ro, opt, bool, whether the device supports configuring floor display-->true
</isSupportElevatorFloorCalibration>
<isSupportPictureCaptureComparision>
<!--ro, opt, bool, whether the device supports 1V1 comparison of the pictures in the library and from camera-->true
</isSupportPictureCaptureComparision>
<isSupportGPSCalibratation>
<!--ro, opt, bool, whether the device supports the GPS calibration function-->true

m
</isSupportGPSCalibratation>

co
<isSupportCityManagement>
<!--ro, opt, bool, whether the device supports city management detection event-->true
</isSupportCityManagement>

a.
<isSupportBVCorrect>
<!--ro, opt, bool, whether the device supports configuring the parameters of camera correction-->true

C. arc
</isSupportBVCorrect>
<isSupportSteamingCodingModeSwitch>
<!--ro, opt, bool, encoding output mode (true-support), desc:related URI: /ISAPI/System/streamingCoding/mode/capabilities?format=json-->true
</isSupportSteamingCodingModeSwitch>

s, em
<supportImageChannel opt="1,2,3,4">
<!--ro, opt, string, whether the device supports configuring the image channel, attr:opt{req, string},

A
desc:the configuration of actual image channel supported by the device (URI for picture parameters: /ISAPI/Image/channels/<channelID>), if this node is not

no fr
returned, the image channel is the same with the encoding channel (/ISAPI/Streaming/channels) by default
this node is mainly for the situation when the image channel is inconsistent with the actual stream channel. For example, some device, which altogether
has four sensors and they are all spliced into one encoding channel for output. Every sensor supports configuring image parameters; by default, the image

ri on
channel 1 is only valid for the images of sensor1-->test
</supportImageChannel>

Ma oc
<isSupportPanoramaCalibration>
<!--ro, opt, bool, whether the device supports configuring the calibration of the panoramic camera-->true
</isSupportPanoramaCalibration>
up
<isSupportPanoramaMode>
<!--ro, opt, bool, whether the device supports the mode switch of the panoramic camera-->true
</isSupportPanoramaMode>
co gr

<supportSnapshotChannel opt="1">
<!--ro, opt, string, the capability supported by the capture schedule channel, attr:opt{opt, string}-->test
</supportSnapshotChannel>
es a@

<isSupportPanoramaCorrections>
<!--ro, opt, bool, whether the device supports configuring the correction algorithm parameters-->true
Fr rc

</isSupportPanoramaCorrections>
s

<isSupportActiveMulticast>
<!--ro, opt, bool, whether the device supports multicast configuration (/ISAPI/Streaming/channels/<ID>/capabilities)-->true
y ema

</isSupportActiveMulticast>
<isSupportChannelEventListCap>
<!--ro, opt, bool, it indicates that whether the device supports getting the event capability of all channels of the device-->true
</isSupportChannelEventListCap>
os fr

<VCAResourceChannelsCap>
<!--ro, opt, object, it indicates that the device supports the independent switch of intelligent resources by channel-->
<ChannelsList>
ad on

<!--ro, opt, array, channel list, subType:object-->


<channelsID>
el .c

<!--ro, req, int, No. of channels supported by the device-->1


</channelsID>
</ChannelsList>
ez

</VCAResourceChannelsCap>
<isSupportTimerVCAResource>
<!--ro, opt, bool, whether the device supports scheduled switch of intelligent resources-->true
en

</isSupportTimerVCAResource>
<MixedTargetDetection>
im

<!--ro, opt, object, the capability of recognizing specified target among mixed targets supported by the device-->
<isSupportFaceRecognition>
ng

<!--ro, opt, bool, whether the device supports facial recognition-->true


Aj

</isSupportFaceRecognition>
<isSupportHumanRecognition>
Co

<!--ro, opt, bool, whether the device supports human body recognition-->true
</isSupportHumanRecognition>
<isSupportVehicleRecognition>
<!--ro, opt, bool, whether the device supports vehicle recognition-->true
</isSupportVehicleRecognition>
</MixedTargetDetection>
<isSupportDiscoveryMode>
<!--ro, opt, bool, whether the device supports discovery mode, desc:related URI: /ISAPI/System/discoveryMode/capabilities-->true
</isSupportDiscoveryMode>
<isSupportDumpData>
<!--ro, opt, bool, whether the device supports exporting the Dump file-->true
</isSupportDumpData>
<isSupportCameraAccessConfiguration>
<!--ro, opt, bool, whether the device supports the camera access configuration, desc:related URI: /ISAPI/System/cameraAccess/configuration/capabilities?
format=json-->true
</isSupportCameraAccessConfiguration>
<isSupportIntelligentSearch>
<!--ro, opt, bool, whether the device supports intelligent search, desc:related URI: /ISAPI/SDT/Management/IntelligentSearch/capabilities?format=json--
>true
</isSupportIntelligentSearch>
<isSupportAutoMaintenance>
<!--ro, opt, bool, whether the device supports automatic maintenance, desc:related URI: /ISAPI/System/autoMaintenance/capabilities?format=json-->true
</isSupportAutoMaintenance>
<isSupportRtspOverHTTPS>
<!--ro, opt, bool, supports tspOverHTTPS-->true
</isSupportRtspOverHTTPS>
<isSupportIntersectionAnalysis>
<!--ro, opt, bool, whether the device supports the intersection analysis, desc:related URI:
/ISAPI/Intelligent/channels/<ID>/intersectionAnalysis/capabilities?format=json-->true
</isSupportIntersectionAnalysis>
<isSupportAudioInteract>
<!--ro, opt, bool, whether the device supports audio interaction, desc:related URI: /ISAPI/Streaming/interact/capabilities?format=json-->true
</isSupportAudioInteract>
<isSupportChannelFullEventListCap>
<!--ro, opt, bool, it indicates that whether the device supports getting the event capability of all channels of the device-->true
</isSupportChannelFullEventListCap>
<isSupportAUXInfoCap>
<!--ro, opt, bool, it indicates that whether the device supports getting the capability of getting the attributes of device's all channels-->true
</isSupportAUXInfoCap>

m
<supportPanoramaChannel opt="2">

co
<!--ro, opt, string, the panoramic channels supported by the device, attr:opt{opt, string}-->test
</supportPanoramaChannel>
<regionClip>

a.
<!--ro, opt, object, the channels and streams that supports area cropping-->
<channels opt="101">
<!--ro, opt, string, the channels and streams that supports area cropping, attr:opt{opt, string}, desc:101: channel No.*100+stream type-->test

C. arc
</channels>
</regionClip>
<AIDEventSupport
opt="abandonedObject,pedestrian,congestion,roadBlock,construction,trafficAccident,fogDetection,wrongDirection,illegalParking,SSharpDriving,lowSpeed,dragRaci

s, em
ng,obstacle,vehNoYieldPedest,illegalMannedVeh,illegalMannedNonMotorVeh,umbrellaTentInstall,nonMotorVehOnVehLane,wearingNoHelmet,pedestRedLightRunning,pedest
OnNonMotorVehLane,pedestOnVehLane,conflagration,smoke,VehicleSpeedDrop,lowVisibility,animalsOccupy,targetSpeedDetection,emergencyLane,gasser,changeLaneConti

A
nuously">

no fr
<!--ro, opt, string, supported AID event, attr:opt{opt, string}-->test
</AIDEventSupport>

ri on
<TFSEventSupport opt="illegalParking
,wrongDirection,crossLane,laneChange,vehicleExist,turnRound,parallelParking,notKeepDistance,notSlowZebraCrossing,overtakeRightSide,lowSpeed,dragRacing,chang
eLaneContinuously,SSharpDriving,largeVehicleOccupyLine,jamCrossLine,obstacle,blackSmokeVehicle,turnRightStop,occupyDedicatedLane,notDriveInDedicatedLane,TFS

Ma oc
_nonZipperMerge,overSpeed,emergencyLane,gasser">
<!--ro, opt, string, supported TFS, attr:opt{opt, string}-->test
</TFSEventSupport>
up
<isVehicleStatisticsSupport>
<!--ro, opt, bool, whether the device supports configuring the parameters for traffic data statistics-->true
co gr

</isVehicleStatisticsSupport>
<isSupportElevatorFloorName>
<!--ro, opt, bool, whether the device supports configuring floor custom name-->true
es a@

</isSupportElevatorFloorName>
<isSupportVehicleFaceRecognition>
<!--ro, opt, bool, whether the device supports checkpoint vehicle recognition, desc:background: the traffic devices support "facial recognition"
Fr rc

(driver), however, the corresponding node is not added to the device to notify the integration of this capability-->true
</isSupportVehicleFaceRecognition>
y ema

<VQDEventSupport opt="luma,chroma,snow,streak,freeze,sigLose,clarity,jitter,block,flowers,noise,ghost,purple,ICR,protectiveFilm,blur,contrast">
<!--ro, opt, string, VQD event list, attr:opt{opt, string}, desc:"Luma" (brightness exception); "Chroma" (image color cast); "Snow" (snow noise);
"Streak" (strip noise); "Freeze" (frozen screen); "SigLose" (signal loss); "Clarity" (resolution exception); "JItter" (image flutter); "Block"
(video tampering); "Flowers" (blurred screen); "Noise" (image noise); "Ghost" (ghost image); "Purple" (purple fringing); "ICR" (ICP); "protectiveFilm"
os fr

(protective film unremoved)-->test


</VQDEventSupport>
<IOTCap>
ad on

<!--ro, opt, object, supports searching for the device status list by page, desc:not returned (not support, get the device status list via GET)-->
<supportChannelNum opt="1024">
<!--ro, opt, int, the number of supported IOT device channels, attr:opt{opt, string}-->1
el .c

</supportChannelNum>
<startChannelNo>
ez

<!--ro, opt, int, the channel No. of start IOT device-->1


</startChannelNo>
<isSupportlinkageChannelsSearch>
en

<!--ro, opt, bool, true (support), desc:related URI: (POST /ISAPI/System/IOT/linkageChannels?format=json)-->true


</isSupportlinkageChannelsSearch>
<isSupportIOTChannelCap>
im

<!--ro, opt, bool, whether the device supports the channel configuration capability-->true
</isSupportIOTChannelCap>
ng

<satusSearchTaskCap>
Aj

<!--ro, opt, object, task search capability-->


Co

<maxResults>
<!--ro, opt, int, the maximum number of returned results-->1
</maxResults>
<filterType opt="all,online,offline,updateFailed,notPartitioned">
<!--ro, opt, enum, filtering type, subType:string, attr:opt{req, string}, desc:all, online, offline, updateFailed (upgrading failed)-->all
</filterType>
<deviceStatus opt="calling,noCall,medicationChangePrompt,alarming,offline,free,callWaiting">
<!--ro, opt, string, the value range for the device status search condition, range:[0,32], attr:opt{req, string}, desc:"calling" (calling), "noCall"
(non-calling status), "medicationChangePrompt", "alarming", "offline", "free"; if multiple conditions are specified, their relationship is "and" by default-
->calling
</deviceStatus>
<logicRelationship opt="and,or">
<!--ro, opt, string, the value range for the logic relationship of device status search condition, range:[0,16], attr:opt{req, string}, desc:and-
the relationship between them is "and" (by default), or- the relationship between them is "or"; it is valid when deviceStatus exists-->and
</logicRelationship>
<alarmType opt="SOS,toilet">
<!--ro, opt, string, value range of alarm type, range:[0,16], attr:opt{req, string}, desc:SOS-SOS call, toilet-toilet alarm. It is valid when the
deviceStatus contains Alarming-->test
</alarmType>
<callWaitingType opt="normal,cisit">
<!--ro, opt, string, Alarm Type, attr:opt{req, string}, desc:normal-normal call waiting, visit-visit call waiting. It is valid when the deviceStatus
contains callWaiting-->test
</callWaitingType>
</satusSearchTaskCap>
</satusSearchTaskCap>
<channelConfigList>
<!--ro, opt, array, capability list returned according to unitType, subType:object-->
<channelConfig>
<!--ro, opt, object, device type capability-->
<unitType>
<!--ro, opt, enum, unit type, subType:string, desc:"indoor" (indoor station), "villa" (villa door station), "confirm" (doorphone), "outdoor" (door
station), "fence" (outer door station), "doorbell" (doorbell), "manage" (main station), "acs" (access control devices), "wardStation", "bedheadExtension",
"bedsideExtension", "terminal", "netAudio" (network sound box), "analogIndoor" (analog indoor station), "decoder" (decoder), "networkFireAlarmMatrix",
"amplifier" (network amplifier), "pagingMicrophone" (SIP phone)-->outdoor
</unitType>
<floorNumber min="0" max="65535">
<!--ro, opt, int, floor No., attr:min{req, int},max{req, int}-->0
</floorNumber>
<roomNumber min="0" max="65535">
<!--ro, opt, int, room No., attr:min{req, int},max{req, int}-->0

m
</roomNumber>
<isSupportSlaveDevice>

co
<!--ro, opt, bool, whether the device supports sub-devices-->true
</isSupportSlaveDevice>
<isSupportZeroFloorNumber>

a.
<!--ro, opt, bool, whether the zero floor is supported, desc:it is used together with node floorNumber-->true
</isSupportZeroFloorNumber>

C. arc
<periodNumber min="1" max="65535">
<!--ro, opt, int, community number, attr:min{req, int},max{req, int}-->0
</periodNumber>
<buildingNumber min="1" max="65535">

s, em
<!--ro, opt, int, building number, attr:min{req, int},max{req, int}-->0
</buildingNumber>

A
<unitNumber min="0" max="65535">

no fr
<!--ro, opt, int, unit number, attr:min{req, int},max{req, int}-->0
</unitNumber>
<deviceIndex min="1" max="15">

ri on
<!--ro, opt, string, device No. length range, attr:min{req, int},max{req, int}-->test
</deviceIndex>

Ma oc
<industryType opt="builidings,prison,medicalTreatment,broadcasting,general">
<!--ro, opt, string, industry (scene) type, range:[0,32], attr:opt{req, string}, desc:"builidings" (building), "prison", "medicalTreatment"
(medical), "broadcasting", "general"-->test
up
</industryType>
<alarmEnabled opt="true,false">
<!--ro, opt, bool, whether to enable the arming function of IoT devices, attr:opt{req, string}, desc:this field is used to check if arming is
co gr

supported when adding devices. (Related field: alarmEnabled; related URI: /ISAPI/System/IOT/channels?format=json)-->true
</alarmEnabled>
es a@

<priority min="1" max="100">


<!--ro, opt, int, calling priority, attr:min{req, int},max{req, int}-->0
</priority>
Fr rc

<transportType opt="unicast,multicast">
s

<!--ro, opt, string, broadcasting method, attr:opt{req, string}, desc:unicast, multicast-->test


</transportType>
y ema

<audioVolume min="0" max="15">


<!--ro, opt, int, volume, attr:min{req, int},max{req, int}-->0
</audioVolume>
<callForwardingEnabled>
os fr

<!--ro, opt, bool, whether to enable call transfer, desc:true (enable), false (disable). The default value is false-->true
</callForwardingEnabled>
<callForwardingType opt="unconditional,busy,noReply,noReachable,calling">
ad on

<!--ro, opt, string, call transfer type, range:[0,32], attr:opt{req, string}, desc:"unconditional" (call transfer under any condition), "busy"
(call transfer when busy), "noReply" (call transfer when there is no reply), "noReachable" (call transfer when it is unreachable), "calling" (call transfer
el .c

when calling)-->test
</callForwardingType>
<isSupportCallTerminalNumbe>
ez

<!--ro, opt, bool, whether the device supports configuring the target master station No. for call forwarding-->true
</isSupportCallTerminalNumbe>
<customCommunicationName min="0" max="128">
en

<!--ro, opt, string, custom contact name, range:[0,128], attr:min{req, int},max{req, int}, desc:when this node is configured, the custom contact
name will be displayed during device calling prior to the terminal number-->test
im

</customCommunicationName>
<isSupportMoreFeatures>
ng

<!--ro, opt, bool, whether the device supports more functions, desc:it is not supported by default if this node is not returned-->true
Aj

</isSupportMoreFeatures>
<isNotSupportRegPassword>
Co

<!--ro, opt, bool, whether the password registration configuration is not supported, desc:it is supported if this node is not returned or false is
returned-->true
</isNotSupportRegPassword>
<mappingRoomNumber min="0" max="5">
<!--ro, opt, int, mapping room No., attr:min{req, int},max{req, int}, desc:the mapping room No. is unique and can be called without exposing the
actual room No., for privacy requirement for overseas users-->0
</mappingRoomNumber>
<deviceID min="0" max="64">
<!--ro, opt, string, device ID, attr:min{req, int},max{req, int}, desc:supported for ISUP protocol access-->test
</deviceID>
<ISUPkey min="1" max="32">
<!--ro, opt, string, ISUP Key, attr:min{req, int},max{req, int}, desc:supported for ISUP protocol access-->test
</ISUPkey>
<dialUpAddress min="1" max="1024">
<!--ro, opt, string, dial address, attr:min{req, int},max{req, int}, desc:this node is required when <unitType> is "analogIndoor"-->test
</dialUpAddress>
</channelConfig>
</channelConfigList>
<isSupportConfigTemplate>
<!--ro, opt, bool, whether the device supports exporting the device list template-->true
</isSupportConfigTemplate>
<isSupportConfigReport>
<!--ro, opt, bool, whether the device supports getting the importing details-->true
</isSupportConfigReport>
<unitType
opt="indoor,villa,confirm,outdoor,fence,doorbell,manage,acs,interactive,wardStation,bedheadExtension,bedsideExtension,analogIndoor,decoder,networkFireAlarmM
atrix,amplifier,pagingMicrophone,PDA,netSwitch,entrywayStation">
<!--ro, opt, string, device type, range:[0,32], attr:opt{req, string}, desc:terminal, netAudio (network sound box)-->test
</unitType>
<serialNumber min="1" max="32">
<!--ro, opt, string, the value range of device serial No. length, range:[0,32], attr:min{req, int},max{req, int}-->test
</serialNumber>
<isSupportAsyncStatus>
<!--ro, opt, bool, whether the device supports asynchronously getting the status of non-video channels, desc:URI for device update: PUT
/ISAPI/System/IOT/channels/updateStatusTask?format=json; URI for getting the update progress: GET /ISAPI/System/IOT/channels/updateStatusProgress?
format=json-->true
</isSupportAsyncStatus>
<isSupportAddIOTChannelList>
<!--ro, opt, bool, whether the device supports batch adding channels of IoT devices, desc:URI for batch adding channels of IoT devices: POST

m
/ISAPI/System/IOT/channels/AddIOTChannelList?format=json-->true

co
</isSupportAddIOTChannelList>
<isSupportSearchMoreIOTSource>
<!--ro, opt, bool, whether the device supports searching for the IoT devices which can be added (by multiple conditions), desc:related URI: POST

a.
/ISAPI/System/IOT/channels/AddIOTChannelList?format=json-->true
</isSupportSearchMoreIOTSource>
<channelConfigReportMode>

C. arc
<!--ro, opt, enum, mode of importing the list of IoT devices, subType:string, desc:different devices (main station and door station) process the
imported device list in a different way, which should be returned to the users for prompt. URL for importing the device list:
/ISAPI/System/IOT/channelConfig?format=json; cover; add-->cover
</channelConfigReportMode>

s, em
</IOTCap>

A
<isSupportLCDScreen>

no fr
<!--ro, opt, bool, whether the device supports LCP display screen-->true
</isSupportLCDScreen>
<isSupportBluetooth>

ri on
<!--ro, opt, bool, whether the device supports bluetooth, desc:related URI: /ISAPI/System/Bluetooth/capabilities-->true
</isSupportBluetooth>
<isSupportNetScreen>

Ma oc
<!--ro, opt, bool, whether the device supports network screen (Nova screen), desc:related URI: /ISAPI/System/netScreens/capabilities?format=json-->true
</isSupportNetScreen>
up
<isSupportLocation>
<!--ro, opt, bool, whether the device supports getting the device location information, desc:related URI: /ISAPI/System/location?format=json-->true
</isSupportLocation>
co gr

<isSupportDebugInfoExport>
<!--ro, opt, bool, whether the device supports exporting the debugging information, desc:related URI: /ISAPI/System/debugInfoExport/capabilities?
format=json-->true
es a@

</isSupportDebugInfoExport>
<isSupportIoTGateway>
<!--ro, opt, bool, whether the device supports IoT gateway functions, desc:related URI: /ISAPI/System/IoTGateway/capabilities?format=json-->true
Fr rc

</isSupportIoTGateway>
<isSupportImageCap>
y ema

<!--ro, opt, bool, whether the device supports configuring image parameters-->true
</isSupportImageCap>
<isSupportLogToUSB opt="true,false">
<!--ro, opt, bool, whether the device supports exporting logs to USB, attr:opt{opt, string}, desc:related URI:
os fr

/ISAPI/System/exportLogToUSB/capabilities?format=json-->true
</isSupportLogToUSB>
<isSupportWiresharkToUSB opt="true,false">
ad on

<!--ro, opt, bool, whether the device supports exporting packet capture information to USB, attr:opt{opt, string}, desc:related URI:
ISAPI/System/wiresharkToUSB/capabilities?format=json-->true
</isSupportWiresharkToUSB>
el .c

<CDBurningStreamEncryptionChannels opt="1,2">
<!--ro, opt, string, return the capability of device recording stream encryption channel, attr:opt{opt, string}, desc:related URI:
ez

/ISAPI/Streaming/channels/<ID>/capabilities-->true
</CDBurningStreamEncryptionChannels>
<isSupportOCR>
en

<!--ro, opt, bool, whether the device supports OCR detection, desc:related URI: /ISAPI/Intelligent/channels/<ID>/OCR/capabilities?format=json-->true
</isSupportOCR>
<isSupportInstallationAngleCalibration>
im

<!--ro, opt, bool, whether the device supports the capability of installation angle calibration, desc:related URI:
ng

/ISAPI/System/installationAngleCalibration/channels/<ID>/capabilities-->true
Aj

</isSupportInstallationAngleCalibration>
<isSupportZeroBiasCalibration>
Co

<!--ro, opt, bool, whether the device supports the zero angle calibration capability node, desc:related URI:
/ISAPI/System/zeroBiasCalibration/channels/<ID>?format=json-->true
</isSupportZeroBiasCalibration>
<isSupportCalibrationFile>
<!--ro, opt, bool, whether the device importing the calibration file, desc:related URI: /ISAPI/System/configurationData-->true
</isSupportCalibrationFile>
<isSupportDisplayTrajectory>
<!--ro, opt, bool, whether the device supports target track overlay (playing library)-->true
</isSupportDisplayTrajectory>
<maximumSuperPositionTime opt="5,10,20,30">
<!--ro, opt, string, the maximum overlay time, attr:opt{opt, string}, desc:unit: s; it is only returned when the target track overlay is supported--
>true
</maximumSuperPositionTime>
<isSupportUnitConfig>
<!--ro, opt, bool, whether the device supports the unit configuration, desc:related URI: /ISAPI/System/unitConfig/capabilities?format=json-->true
</isSupportUnitConfig>
<isSupportShipsDetectionWithScene>
<!--ro, opt, bool, whether the device supports ship detection by scene-->true
</isSupportShipsDetectionWithScene>
<isSupportPictureServer>
<!--ro, opt, bool, whether the device supports configuring the picture storage server, desc:related URI: /ISAPI/System/PictureServer/capabilities?
format=json-->true
</isSupportPictureServer>
<isSupportEmmcInfo>
<isSupportEmmcInfo>
<!--ro, opt, bool, the capability of supporting the EMMC configuration, desc:related URI: /ISAPI/System/emmcInfo/capabilities?format=json-->true
</isSupportEmmcInfo>
<isSupportVehicleIllegalType opt="1,2...29">
<!--ro, opt, string, the vehicle violation types supported by the device, attr:opt{opt, string}, desc:the content value is the same as the index value,
refer to NET_ITS_PLATE_RESULT.NET_DVR_VEHICLE_INFO.byIllegalType the capture camera is connected to the new platform, and the device supports "traffic
violation alarm"; however, the corresponding node is not added to the device to notify the integration of this capability; that is, the traffic violation
alarm capability lacks details. If later the platform needs to develop capability with details, the current device will be incompatible with the capability;
and detailed capability is hidden in the configuration of all trigger modes, which will influence overall access-->test
</isSupportVehicleIllegalType>
<isSupportRFIDChannels>
<!--ro, opt, bool, whether the device supports getting the RFID channel, desc:related URI: /ISAPI/System/RFIDChannels?format=json-->true
</isSupportRFIDChannels>
<isSupportRfidCollection>
<!--ro, opt, bool, whether the device supports the event of uploading RFID tag information, desc:related URI:
/ISAPI/System/Network/RFIDData/<channelID>/capabilities, eventType: rfidCollection-->true

m
</isSupportRfidCollection>
<DevInfoSearch opt="tiltAngle">

co
<!--ro, opt, string, whether the device supports searching for the device information, attr:opt{opt, string}, desc:related URI:
/ISAPI/System/workingstatus/devInfoSearch?format=json-->test

a.
</DevInfoSearch>
<isSupportAIOpenPlatform>
<!--ro, opt, bool, whether the device supports AI open platform device capability, desc:related URI: /ISAPI/Intelligent/AIOpenPlatform/capabilities?

C. arc
format=json-->true
</isSupportAIOpenPlatform>
<isSupportPictureDownloadError>
<!--ro, opt, bool, whether the device supports uploading the exception that downloading the picture failed, desc:eventType: pictureDownloadError-->true

s, em
</isSupportPictureDownloadError>
<isSupportStudentBehavior>

A
<!--ro, opt, bool, whether the device supports uploading the data of students in-class behavior, desc:eventType: studentBehavior-->true

no fr
</isSupportStudentBehavior>
<guideEventSupport opt="linkageCapture">

ri on
<!--ro, opt, string, the list of web quick configuration guide, attr:opt{opt, string}, desc:related URI:
/ISAPI/System/guideConfig/<guideEvent>/capabilities?format=json-->test
</guideEventSupport>

Ma oc
<supportRemoteCtrl opt="up,down,left,right,enter,menu,num,power,esc,edit,F1,.prev,rec,play,stop,notSupport">
<!--ro, opt, string, whether the device supports remote control, attr:opt{opt, string}, desc:related URI: /ISAPI/System/remoteCtrl/XXX-->test
</supportRemoteCtrl>
up
<isSupportSSDFileSystemUpgrade>
<!--ro, opt, bool, whether the device supports updating the SSD file system, desc:related URI: /ISAPI/System/SSDFileSystem/upgrade?format=json-->true
</isSupportSSDFileSystemUpgrade>
co gr

<isSupportSSDFileSystemFormat>
<!--ro, opt, bool, whether the device supports formatting SSD, desc:related URI: /ISAPI/System/SSDFileSystem/format?format=json-->true
es a@

</isSupportSSDFileSystemFormat>
<FaceCounting>
<!--ro, opt, object, whether the device supports the customer traffic (face)-->
Fr rc

<ChannelsList>
<!--ro, opt, array, channel list, subType:object-->
<channelsID>
y ema

<!--ro, req, int, No. of channels supported by the device-->1


</channelsID>
</ChannelsList>
</FaceCounting>
os fr

<isSupportCluster>
<!--ro, opt, bool, related URI:, desc:/ISAPI/ContentMgmt/Cluster/capabilities-->true
ad on

</isSupportCluster>
<DeviceConfigurationSupport opt="time,network,accessProtocol,recordSchedule,channel,customProtocol">
<!--ro, opt, string, content supported by device parameters configuration, attr:opt{opt, string}, desc:related URI: /ISAPI/System/deviceConfiguration--
el .c

>test
</DeviceConfigurationSupport>
<behaviorEventSupport opt="getUp,toiletTarry,playCellphone">
ez

<!--ro, opt, string, abnormal event detection types, attr:opt{opt, string}-->test


</behaviorEventSupport>
en

<isSupportBVCorrectPassthrough>
<!--ro, opt, bool, whether the device supports transparent transmission of camera correction data, desc:related URI:
/ISAPI/System/BVCorrect/Passthrough/channels/<ID>/capabilities?format=json-->true
im

</isSupportBVCorrectPassthrough>
<VehiclePositionControl>
ng

<!--ro, opt, object, whether the device supports vehicle position arming-->
Aj

<license min="0" max="16">


<!--ro, req, string, license plate number, attr:min{opt, string},max{opt, string}-->test
Co

</license>
<intervalTime min="0" max="65535" def="1">
<!--ro, req, int, uploading interval, unit:s, attr:min{opt, string},max{opt, string},def{opt, string}-->1
</intervalTime>
</VehiclePositionControl>
<supportGISEvent opt="AID,TPS,ANPR,mixedTargetDetection">
<!--ro, opt, string, the capability of supporting getting the GIS information, attr:opt{opt, string}-->test
</supportGISEvent>
<isSupportGPSPTZCalibratation>
<!--ro, opt, bool, whether the device supports GPS PTZ calibration, desc:related URI: /ISAPI/System/GPSPTZCalibratation/channels/<ID>/points?
format=json-->true
</isSupportGPSPTZCalibratation>
<isSupportRadar>
<!--ro, opt, bool, whether the device supports radar functions, desc:related URI: /ISAPI/Radar/capabilities?format=json-->true
</isSupportRadar>
<isSupportISUPHttpPassthrough>
<!--ro, opt, bool, whether the device supports ISUPV5.0http transparent transmission-->true
</isSupportISUPHttpPassthrough>
<isSupportMaterialListQuery>
<!--ro, opt, bool, whether the device supports uploading the material list, desc:event: materialListQuery-->true
</isSupportMaterialListQuery>
<isSupportDebugLogAsync>
<!--ro, opt, bool, whether the device supports exporting the debugging log asynchronously-->true
<!--ro, opt, bool, whether the device supports exporting the debugging log asynchronously-->true
</isSupportDebugLogAsync>
<isSupportAlgorithmsInfo>
<!--ro, opt, bool, whether the device supports getting the algorithm version of the device-->true
</isSupportAlgorithmsInfo>
<isSupportSecurityChecking>
<!--ro, opt, bool, whether the device supports configuring security checking, desc:true (support); otherwise, not support-->true
</isSupportSecurityChecking>
<isSupportSecurityCheckException>
<!--ro, opt, bool, whether the device supports the security checking exception event, desc:eventType: securityCheckException-->true
</isSupportSecurityCheckException>
<isSupportPictureManage>
<!--ro, opt, bool, whether the device supports the device's picture management function, desc:related URI:
/ISAPI/System/isSupportPictureManage/capabilities?format=json-->true
</isSupportPictureManage>
<isSupportAutoSwitch>
<!--ro, opt, bool, whether the device supports automatically powering on and powering off, desc:related URI: /ISAPI/System/autoSwitch/capabilities?

m
format=json-->true

co
</isSupportAutoSwitch>
<SHMCap>
<!--ro, opt, object, SHM alarm-->

a.
<isSupportHighHDTemperature>
<!--ro, opt, bool, whether the device supports HDD high temperature detection, desc:eventType: highHDTemperature-->true

C. arc
</isSupportHighHDTemperature>
<isSupportLowHDTemperature>
<!--ro, opt, bool, whether the device supports HDD low temperature detection, desc:eventType: lowHDTemperature-->true
</isSupportLowHDTemperature>
<isSupportHDImpact>

s, em
<!--ro, opt, bool, whether the device supports HDD impact detection, desc:eventType: hdImpact-->true

A
</isSupportHDImpact>

no fr
<isSupportHDBadBlock>
<!--ro, opt, bool, whether the device supports HDD bad sector detection, desc:eventType: hdBadBlock-->true
</isSupportHDBadBlock>

ri on
<isSupportSevereHDFailure>
<!--ro, opt, bool, whether the device supports HDD major fault detection, desc:eventType: severeHDFailure-->true
</isSupportSevereHDFailure>

Ma oc
</SHMCap>
<isSupportLinkStatusEvent>
up
<!--ro, opt, bool, whether the device supports uploading the information about the device's network connection status, desc:eventType: linkEvent-->true
</isSupportLinkStatusEvent>
<isSupportVideoDealStatus>
co gr

<!--ro, opt, bool, whether the device supports uploading the information about the video data processing status, desc:eventType: videoDealStatus-->true
</isSupportVideoDealStatus>
<isSupportAudioDealStatus>
es a@

<!--ro, opt, bool, whether the device supports uploading the information about the audio data processing status, desc:eventType: audioDealStatus-->true
</isSupportAudioDealStatus>
Fr rc

<isSupportNetPackLossStatus>
s

<!--ro, opt, bool, whether the device supports uploading the information about the network lost package status, desc:eventType: netPacketLoss-->true
</isSupportNetPackLossStatus>
y ema

<isSupportVideoConferenceStatus>
<!--ro, opt, bool, whether the device supports uploading the information about the video conference status, desc:eventType: videoConference-->true
</isSupportVideoConferenceStatus>
<isSupportDataPrealarm>
os fr

<!--ro, opt, bool, whether the device supports network traffic pre-alarm event, desc:eventType: dataPrealarm-->true
</isSupportDataPrealarm>
<isSupportClearCache>
ad on

<!--ro, opt, bool, whether the device supports clearing the cache, desc:related URI: /ISAPI/System/clearCache?format=json-->true
</isSupportClearCache>
el .c

<isSupportIntelligentMode>
<!--ro, opt, bool, whether the device supports switching the intelligent mode, desc:related URI: /ISAPI/System/IntelligentMode?format=json-->true
</isSupportIntelligentMode>
ez

<isSupportFaceTemperatureMeasurementEvent>
<!--ro, opt, bool, whether the device supports the skin-surface temperature measurement event, desc:eventType: FaceTemperatureMeasurementEvent-->true
</isSupportFaceTemperatureMeasurementEvent>
en

<isSupportQRCodeEvent>
<!--ro, opt, bool, whether the device supports the QR code event, desc:eventType: QRCodeEvent-->true
</isSupportQRCodeEvent>
im

<isSupportVisitorEvent>
ng

<!--ro, opt, bool, whether the device supports the visitor event, desc:eventType: VisitorEvent-->true
Aj

</isSupportVisitorEvent>
<isSupportEmployeeAuthEvent>
Co

<!--ro, opt, bool, whether the device supports the employee authorization event, desc:eventType: EmployeeAuthEvent-->true
</isSupportEmployeeAuthEvent>
<isSupportVisitorInfoSearchEvent>
<!--ro, opt, bool, whether the device supports the visitor information search event, desc:eventType: VisitorInfoSearchEvent-->true
</isSupportVisitorInfoSearchEvent>
<isSupportConsumptionEvent>
<!--ro, opt, bool, whether the device supports the transaction record event, desc:eventType: ConsumptionEvent-->true
</isSupportConsumptionEvent>
<isSupportTransactionRecordEvent>
<!--ro, opt, bool, whether the device supports the transaction record event, desc:eventType: TransactionRecordEvent-->true
</isSupportTransactionRecordEvent>
<isSupportFaceContrastResultDisplay>
<!--ro, opt, bool, whether the device supports displaying the face picture comparison result, desc:related URI:
/ISAPI/Intelligent/faceContrast/resultDisplay/capabilities?format=json-->true
</isSupportFaceContrastResultDisplay>
<isSupportPatchUpgrade>
<!--ro, opt, bool-->true
</isSupportPatchUpgrade>
<isSupportSnapshotAsync>
<!--ro, opt, bool, whether the device supports capturing pictures asynchronously (the picture URL will be returned), desc:related URI:
/ISAPI/Streaming/channels/<ID>/picture/async?format=json-->true
</isSupportSnapshotAsync>
<isSupportLogExportByUSB>
<!--ro, opt, bool, exporting logs to PC from USB flash, desc:related URI: /ISAPI/System/exportUSBLog?format=json-->true
<!--ro, opt, bool, exporting logs to PC from USB flash, desc:related URI: /ISAPI/System/exportUSBLog?format=json-->true
</isSupportLogExportByUSB>
<isSupportShellCmd>
<!--ro, opt, bool, whether the device supports shell command control, desc:related URI: /ISAPI/System/shellCmd?format=json-->true
</isSupportShellCmd>
<faceMonitor opt="dailyFaceMonitor,dailyFaceTracking,VCAFaceMonitor,VCAFaceTracking,manualFaceMonitor,advanceConfiguration,">
<!--ro, opt, bool, whether the device supports face arming, attr:opt{opt, string}, desc:related URI: /ISAPI/Intelligent/channels/<ID>/dailyFaceMonitor?
format=json-->true
</faceMonitor>
<isSupportRelatedVCAResource>
<!--ro, opt, bool, whether the device supports the system-level intelligent resources configuration protocol, desc:related URI:
/ISAPI/System/RelatedVCAResource/capabilities?format=json; this protocol conficts with thew previous intelligent resources switch protocol-->true
</isSupportRelatedVCAResource>
<isSupportVehicleMonitor>
<!--ro, opt, bool, whether the device supports intelligent arming and tracking of vehicles, desc:related URI:
/ISAPI/Traffic/channels/<ID>/vehicleMonitor/capabilities?format=json-->true

m
</isSupportVehicleMonitor>
<isSupportManualVehicleMonitor>

co
<!--ro, opt, bool, whether the device supports manual arming and tracking of vehicles, desc:related URI:
/ISAPI/Traffic/channels/<ID>/vehicleMonitor/manual/capabilitis?format=json-->true

a.
</isSupportManualVehicleMonitor>
<isSupportDailyVehicleMonitor>
<!--ro, opt, bool, whether the device supports daily arming and tracking of vehicles, desc:related URI:

C. arc
/ISAPI/Traffic/channels/<ID>/vehicleDetect/capabilities-->true
</isSupportDailyVehicleMonitor>
<isSupportInputProxyDeviceInfo>
<!--ro, opt, bool, whether the device supports getting the information of the devices added to the proxy device channel, desc:related URI:

s, em
/ISAPI/ContentMgmt/InputProxy/channels/<ID>/capabilities-->true
</isSupportInputProxyDeviceInfo>

A
<isSupportAccessControlCap>

no fr
<!--ro, opt, bool, access control capability, desc:related URI: /ISAPI/AccessControl/capabilities-->true
</isSupportAccessControlCap>

ri on
<isSupportDebugLog>
<!--ro, opt, bool, whether the device supports exporting the debugging log, desc:related URI: /ISAPI/System/debugLog?format=json-->true
</isSupportDebugLog>

Ma oc
<isSupportFaceAppear>
<!--ro, opt, bool, whether the device supports face appearing detection event, desc:eventType: faceAppear-->true
</isSupportFaceAppear>
up
<isSupportFaceDisappear>
<!--ro, opt, bool, whether the device supports face disappearing detection event, desc:eventType: faceDisappear-->true
co gr

</isSupportFaceDisappear>
<isSupportTeacherBehavior>
<!--ro, opt, bool, whether the device supports the abnormal event detection of teachers, desc:eventType: teacherBehavior-->true
es a@

</isSupportTeacherBehavior>
<isSupportHeadRiseRate>
<!--ro, opt, bool, whether the device supports face appearing detection event, desc:eventType: headRiseRate-->true
Fr rc

</isSupportHeadRiseRate>
<isSupportIPCUpgrade>
<!--ro, opt, bool, whether the device supports upgrading IPC via NVR and other devices, desc:related URI: /ISAPI/System/IPCUpgrade/<ID>?format=json--
y ema

>true
</isSupportIPCUpgrade>
<isSupportFaceLibRebuildEvent>
<!--ro, opt, bool, whether the device supports uploading the modeling rebuilding of the face picture library event, desc:eventType: faceLibRebuild--
os fr

>true
</isSupportFaceLibRebuildEvent>
ad on

<isSupportCalibrationStream>
<!--ro, opt, bool, supported capability of calibration stream, desc:related URI: /ISAPI/Streaming/calibStream/capabilities?format=json-->true
</isSupportCalibrationStream>
el .c

<isSupportChannelOccupy>
<!--ro, opt, bool, whether the device supports outdoor fire engine access occupied by vehicles, desc:eventType: channelOccupy-->true
</isSupportChannelOccupy>
ez

<isSupportOffDuty>
<!--ro, opt, bool, whether to support fire control room person absence detection, desc:eventType: offDuty-->true
en

</isSupportOffDuty>
<isSupportNoCertificate>
<!--ro, opt, bool, whether to support fire control room person without certificate detection, desc:eventType: noCertificate-->true
im

</isSupportNoCertificate>
<isSupportSmokeAlarm>
ng

<!--ro, opt, bool, whether the device supports smoke alarm, desc:eventType: smokeAlarm-->true
Aj

</isSupportSmokeAlarm>
Co

<isSupportBatteryCarDisobey>
<!--ro, opt, bool, whether to support illegal parking detection of electric moped, desc:eventType: batteryCarDisobey-->true
</isSupportBatteryCarDisobey>
<isSupportNoFireExtinguisherRecog>
<!--ro, opt, bool, whether to support fire extinguisher loss detection, desc:eventType: noFireExtinguisherRecog-->true
</isSupportNoFireExtinguisherRecog>
<isSupportIndoorPasswayBlock>
<!--ro, opt, bool, whether to support indoor access blocking detection, desc:eventType: indoorPasswayBlock-->true
</isSupportIndoorPasswayBlock>
<isSupportFireSmartFireDetect>
<!--ro, opt, bool, whether the device supports fire detection, desc:eventType: fireSmartFireDetect-->true
</isSupportFireSmartFireDetect>
<isSupportDetectorRunningStatus>
<!--ro, opt, bool, whether the device supports getting the detector running status, desc:eventType: detectorRunningStatus-->true
</isSupportDetectorRunningStatus>
<isSupportDetectorOperationStatus>
<!--ro, opt, bool, whether the device supports getting the detector operation status, desc:eventType: detectorOperationStatus-->true
</isSupportDetectorOperationStatus>
<isSupportDetectorTemperatureAlarm opt="highTemperature,riseTemperature,flame">
<!--ro, opt, bool, whether the device supports the detector temperature alarm, attr:opt{req, string}-->true
</isSupportDetectorTemperatureAlarm>
<isSupportDetectorShelterAlarm>
<!--ro, opt, bool, whether to support detector sheltering alarm, desc:eventType: detectorShelterAlarm-->true
</isSupportDetectorShelterAlarm>
</isSupportDetectorShelterAlarm>
<isSupportDetectorMotionAlarm>
<!--ro, opt, bool, whether the device supports the detector moving alarm, desc:eventType: detectorMotionAlarm-->true
</isSupportDetectorMotionAlarm>
<isSupportDetectorTamperAlarm>
<!--ro, opt, bool, whether to support detector tampering alarm, desc:eventType: detectorTamperAlarm-->true
</isSupportDetectorTamperAlarm>
<isSupportDetectorEmergencyAlarm>
<!--ro, opt, bool, whether the device supports the detector emergency alarm, desc:eventType: detectorEmergencyAlarm-->true
</isSupportDetectorEmergencyAlarm>
<isSupportDetectorSmokeAlarm>
<!--ro, opt, bool, whether the device supports the detector smoke alarm, desc:eventType: detectorSmokeAlarm-->true
</isSupportDetectorSmokeAlarm>
<isSupportDetectorCombustibleGasAlarm>
<!--ro, opt, bool, whether the device supports the detector combustible gas alarm, desc:eventType: detectorCombustibleGasAlarm-->true
</isSupportDetectorCombustibleGasAlarm>
<isSupportFireControlData>

m
<!--ro, opt, bool, whether to support rreal-time fire control data uploading, desc:eventType:FireControlData-->true

co
</isSupportFireControlData>
<isSupportFireNoRegulation>
<!--ro, opt, bool, whether to support people leaving event uploading, desc:eventType: fireNoRegulation-->true

a.
</isSupportFireNoRegulation>
<isSupportSmokeFireRecognize>

C. arc
<!--ro, opt, bool, whether to support smoke and fire recognization event uploading, desc:eventType: smokeFireRecognize-->true
</isSupportSmokeFireRecognize>
<isSupportClientProxyWEB>
<!--ro, opt, bool, whether to support WEB page jumping,

s, em
desc:the function of going to the web page
package the web program and plug-in into the client (for example, iVMS-4200) for going to the web page it is mainly used in such a scenario: the device

A
removes the web-related resources as the limit of resources, so it does not support operations on the web browser-->true

no fr
</isSupportClientProxyWEB>
<WEBLocation>
<!--ro, opt, string, WEB page placement location, range:[1,32], desc:local-local server, remote-remote server; (if this node is not returned, the WEB

ri on
page will be placed in the local server by default)-->local
</WEBLocation>

Ma oc
<isSupportWEBLocalPlug>
<!--ro, opt, bool, whether to support local download of web plug-in, desc:true-yes (by default), false-no; when this node is not returned, it is
supported by default-->true
up
</isSupportWEBLocalPlug>
<deviceId>
<!--ro, opt, string, device ID, range:[1,32], desc:if WEBLocation is "remote", the unique device ID should be returned to identify the unique
co gr

corresponding web package. This device ID is managed by the Web configuration package. For a specified device of different versions, the same deviceID will
be returned-->test
</deviceId>
es a@

<isSupportTimeZone>
<!--ro, opt, bool, whether the device supports configuring the DST (Daylight Saving Time), desc:related URI: /ISAPI/System/time/timeZone-->true
Fr rc

</isSupportTimeZone>
s

<isSptHealthDetection>
<!--ro, opt, bool, whether the device supports health monitoring, desc:related URI: /ISAPI/System/healthDetection-->true
y ema

</isSptHealthDetection>
<isSptDiagnosis>
<!--ro, opt, bool, whether the device supports diagnosis, desc:related URI: /ISAPI/System/diagnosis-->true
</isSptDiagnosis>
os fr

<isSptSerialLogCfg>
<!--ro, opt, bool, whether the device supports configuring parameters of serial port log redirection, desc:related URI: /ISAPI/System/serialLogCfg?
format=json-->true
ad on

</isSptSerialLogCfg>
<isSptFileExport>
el .c

<!--ro, opt, bool, whether the device supports exporting the device file, desc:related URI: /ISAPI/System/fileExport?format=json-->true
</isSptFileExport>
<isSptCertificationStandard>
ez

<!--ro, opt, bool, whether the device supports configuring host verification standard, desc:related URI: /ISAPI/SecurityCP/certificationStandard-->true
</isSptCertificationStandard>
<isSptKeypadLock>
en

<!--ro, opt, bool, whether the device supports locking the keypad, desc:related URI: /ISAPI/System/keypadLock/config-->true
</isSptKeypadLock>
im

<isSupportVibrationDetection>
<!--ro, opt, bool, whether the device supports the vibration detection, desc:related URI: /ISAPI/System/channels/<ID>/vibrationDetection?format=json--
ng

>true
Aj

</isSupportVibrationDetection>
<isSupportSmokingDetectAlarm>
Co

<!--ro, opt, bool, whether the device supports the smoking alarm, desc:eventType: smokeDetectAlarm-->true
</isSupportSmokingDetectAlarm>
<isSupportRadarChannels>
<!--ro, opt, bool, whether the device supports getting the radar channel, desc:related URI: /ISAPI/System/RadarChannels?format=json-->true
</isSupportRadarChannels>
<radarIPDForm>
<!--ro, opt, enum, radar-camera status, subType:string, desc:"single" (single radar); "double_diagonal" (double radars arranged diagonally);
"double_vertical" (double radars arranged vertically)-->single
</radarIPDForm>
<isSupportRadarFieldDetection>
<!--ro, opt, bool, whether the device supports radar's area intrusion detection, desc:related URI:
/ISAPI/Smart/RadarChannels/<radarChannelID>/radarFieldDetection/capabilities?format=json-->true
</isSupportRadarFieldDetection>
<isSupportRadarLineDetection>
<!--ro, opt, bool, whether the device supports radar's line crossing detection, desc:related URI:
/ISAPI/Smart/RadarChannels/<radarChannelID>/radarLineDetection/capabilities?format=json-->true
</isSupportRadarLineDetection>
<mixedTargetDetectionWebNoDisplay>
<!--ro, opt, bool, multiple targets recognition is not displayed-->true
</mixedTargetDetectionWebNoDisplay>
<isSupportRemovePlaybackRecord>
<!--ro, opt, bool, whether to support removing playback (the device does not support playback), desc:if this function is supported, this node will be
returned and its value is true; otherwise, this node will not be returned. This node will be returned when the value of isSupportRemoveStorage is true;
otherwise, this node will not be returned-->true
</isSupportRemovePlaybackRecord>
<isSupportAudioUpload>
<!--ro, opt, bool, whether the device supports uploading the audio file, desc:related URI: /ISAPI/System/Audio/audioUpload?format=json-->true
</isSupportAudioUpload>
<VCAResourceList>
<!--ro, opt, array, supported smart resources list, subType:object-->
<VCAResource>
<!--ro, opt, object, smart resources-->
<VCAResourceType>
<!--ro, opt, string, smart resources type-->test
</VCAResourceType>
<ChannleVCAResourceList>
<!--ro, opt, array, supported smart resources list, subType:object-->
<ChannleVCAResource>
<!--ro, opt, object, smart channel resources-->

m
<channel>

co
<!--ro, opt, int, channel No.-->1
</channel>
<channleVCAResourceType>

a.
<!--ro, opt, string, smart channel resources type-->test
</channleVCAResourceType>
</ChannleVCAResource>

C. arc
</ChannleVCAResourceList>
</VCAResource>
</VCAResourceList>
<isSupportSlotInsertion>

s, em
<!--ro, opt, bool, whether to support slot plugging in and out, desc:eventType: slotInsertion-->true
</isSupportSlotInsertion>

A
<isSupportNetworkLoop>

no fr
<!--ro, opt, bool, whether to support network loop alarm, desc:eventType: networkLoop-->true
</isSupportNetworkLoop>

ri on
<isSupportApOnOffLine>
<!--ro, opt, bool, whether to support AP online and offline alarm event uploading, desc:eventType: apOnOffLine-->true
</isSupportApOnOffLine>

Ma oc
<isSupportAbnormalWANPort>
<!--ro, opt, bool, whether to support WAN abnormal alarm event uploading, desc:eventType: abnormalWANPort-->true
</isSupportAbnormalWANPort>
up
<isSupportAPException>
<!--ro, opt, bool, whether to support AP exception alarm information uploading, desc:eventType: APException-->true
co gr

</isSupportAPException>
<isSupportACException>
<!--ro, opt, bool, whether to support AC exception alarm information uploading, desc:eventType: ACException-->true
es a@

</isSupportACException>
<isSupportCartridgeCapacity>
<!--ro, opt, bool, whether the device supports the configuration of notifying cartridge capacity, desc:related URL:
Fr rc

/ISAPI/System/printer/cartridgeCapacity/capabilities?format=json-->true
</isSupportCartridgeCapacity>
y ema

<isSupportCDCakeBoxCapacity>
<!--ro, opt, bool, whether the device supports notifying CD capacity, desc:related URL: /ISAPI/System/printer/CDCakeBoxCapacity/capabilities?
format=json-->true
</isSupportCDCakeBoxCapacity>
os fr

<isSupportSleep>
<!--ro, opt, bool, whether the device supports configuring sleep, desc:related URL: /ISAPI/System/sleep/capabilities?format=json-->true
</isSupportSleep>
ad on

<isSupportContainerDetection>
<!--ro, opt, bool, whether the device supports container detection, desc:/ISAPI/Intelligent/containerDetection/capabilities?format=json (for devices
that does not return this node, you can check according to the node returned by the following protocol:
el .c

/ISAPI/Traffic/ContentMgmt/InputProxy/channels/<ID>/ocrScene/capabilities)-->true
</isSupportContainerDetection>
ez

<isSupportRadarVideoDetection>
<!--ro, opt, bool, related URI: /ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json, desc:related URI:
/ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json-->true
en

</isSupportRadarVideoDetection>
<isSupportRadarVideoDetectionRealtime>
<!--ro, opt, bool, whether the device supports radar video detection, desc:related URI:
im

/ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json-->true
</isSupportRadarVideoDetectionRealtime>
ng

<isSupportBatteryStatusUpload>
Aj

<!--ro, opt, bool, whether the device supports uploading the battery status, desc:eventType: batteryStatus-->true
Co

</isSupportBatteryStatusUpload>
<isSupportPowerConsumptionStatusUpload>
<!--ro, opt, bool, whether the device supports uploading device consumption status-->true
</isSupportPowerConsumptionStatusUpload>
<isSupportOnlineUpgradeTask>
<!--ro, opt, bool, whether device online upgrading is supported-->true
</isSupportOnlineUpgradeTask>
<isSupportPersonArmingTrack>
<!--ro, opt, bool, whether the device supports person arming configuration, desc:related URI:
/ISAPI/Intelligent/channels/<ID>/personArmingTrack/capabilities?format=json-->true
</isSupportPersonArmingTrack>
<isSupportManualPersonArmingTrack>
<!--ro, opt, bool, whether the device supports manual person arming, desc:related URI: /ISAPI/Intelligent/channels/<ID>/manualPersonArmingTrack?
format=json-->true
</isSupportManualPersonArmingTrack>
<isSupportGPSVerification>
<!--ro, opt, bool, whether the device supports GPS verification points, desc:related URI: /ISAPI/System/GPSVerification/channels/<ID>/points?
format=json-->true
</isSupportGPSVerification>
<isSupportHBDLib>
<!--ro, opt, bool, whether the device supports the human body library, desc:related URI: /ISAPI/Intelligent/HBDLib/capabilities?format=json-->true
</isSupportHBDLib>
<isSupportDisinfectionInfo>
<!--ro, opt, bool, whether the device supports uploading disinfection information, desc:eventType: disinfectionInfo-->true
<!--ro, opt, bool, whether the device supports uploading disinfection information, desc:eventType: disinfectionInfo-->true
</isSupportDisinfectionInfo>
<isSupportTempQueryDelete>
<!--ro, opt, bool, whether the device supports deleting temperature query, desc:eventType: tempQueryDelete-->true
</isSupportTempQueryDelete>
<isSupportMobilePayment>
<!--ro, opt, bool, whether the device supports mobile payment, desc:/ISAPI/System/mobilePayment?format=json-->true
</isSupportMobilePayment>
<isSupportFileSearch>
<!--ro, opt, bool, whether the device supports searching files, desc:related URI: /ISAPI/System/fileSearch?format=json-->true
</isSupportFileSearch>
<isSupportFileExportAsync>
<!--ro, opt, bool, whether the device supports exporting files asynchronously, desc:related URI: /ISAPI/System/fileExport/async?format=json-->true
</isSupportFileExportAsync>
<isSupportSSDFileSystemCapacity>
<!--ro, opt, bool, whether the device supports getting the capacity distribution of the SSD system, desc:related URI:

m
/ISAPI/System/SSDFileSystem/capacity?format=json-->true
</isSupportSSDFileSystemCapacity>

co
<isSupport4GSafetyHelmetInfo>
<!--ro, opt, bool, whether the device supports the hard hat event, desc:eventType: 4GSafetyHelmetInfo-->true
</isSupport4GSafetyHelmetInfo>

a.
<isSupportICCID>
<!--ro, opt, bool, whether the device supports getting the ICCID information, desc:related URI: /ISAPI/System/deviceInfo/ICCID?format=json-->true

C. arc
</isSupportICCID>
<isSupportFireEscapeDetection>
<!--ro, opt, bool, whether the device supports fire escape detection, desc:related URI:
/ISAPI/Intelligent/channels/<ID>/fireEscapeDetection/capabilities?format=json-->true

s, em
</isSupportFireEscapeDetection>
<isSupportTakingElevatorDetection>

A
<!--ro, opt, bool, whether the device supports taking elevator detection, desc:related URI:

no fr
/ISAPI/Intelligent/channels/<ID>/takingElevatorDetection/capabilities?format=json-->true
</isSupportTakingElevatorDetection>
<isSupportVehicleMatchResult>

ri on
<!--ro, opt, bool, whether the device supports license plate comparison, desc:related URI:
/ISAPI/Intelligent/channels/<ID>/licensePlateContrast/capabilities?format=json-->true

Ma oc
</isSupportVehicleMatchResult>
<isSupportDataAware>
<!--ro, opt, bool, the data aware capability, desc:related URI: /ISAPI/System/dataAware/capabilities?format=json-->true
up
</isSupportDataAware>
<isSupportAbnormalReboot>
<!--ro, opt, bool, whether the device supports abnormal reboot event, desc:eventType: abnormalReboot-->true
co gr

</isSupportAbnormalReboot>
<isSupportVehicleThermometry>
es a@

<!--ro, opt, bool, whether the device supports vehicle temperature measurement detection, desc:related URI:
/ISAPI/Traffic/channels/<ID>/vehicleDetect/thermometry/capabilities?format=json-->true
</isSupportVehicleThermometry>
Fr rc

<AssociationScenesList>
s

<!--ro, opt, array, the list of scene adaptive linkage, subType:object, desc:it indicates the device supports the scene adaptive linkage between
channels. The current device has two channels: main channel (box camera) and sub channel (radar camera), however, the device only opens a main channel to
y ema

users for scene configuration; the scene configuration of the sub channel is not open for the users; the scene of the sub channel is automatically connected
to the main channel scene; currently, the front-end returns this capability-->
<AssociationScenes>
<!--ro, req, object, the channel list of scene adaptive linkage between channels-->
os fr

<channelID>
<!--ro, req, int, supported scene channel ID, desc:supported scene channel ID-->1
</channelID>
ad on

<isSupportScene>
<!--ro, opt, bool, whether the device supports the scene configuration, desc:whether the current channel is the main channel and supports scene
el .c

configuration , true (main channel and support), this node is not returned (sub channel and not support)-->true
</isSupportScene>
</AssociationScenes>
ez

</AssociationScenesList>
<supportRelationVideoEvent opt="PIR,cityManagement,roadMaint">
<!--ro, opt, string, supports uploading the video of linking triggering event, attr:opt{req, string}, desc:PIR#PIR event, cityManagement#city management
en

event, roadMaint#road maintenance event-->test


</supportRelationVideoEvent>
im

<isSupportVCAResourceList>
<!--ro, opt, bool, whether the device supports configuring intelligent resources in a batch, desc:related URI:
ng

/ISAPI/System/Video/inputs/channels/VCAResourceList?format=json-->true
Aj

</isSupportVCAResourceList>
<isSupportConvergenceCloud>
Co

<!--ro, opt, bool, whether the device supports the URI for EZ interconnection channels, desc:URI for capability of all channels:
/ISAPI/Event/convergenceCloud/channels/capabilities?format=json; URI for capability of specified channel:
/ISAPI/Event/convergenceCloud/channels/<ID>/capabilities?format=json-->true
</isSupportConvergenceCloud>
<isSupportInterconnection>
<!--ro, opt, bool, whether the device supports the URI for EZ interconnection devices, desc:related URI: /ISAPI/Event/convergenceCloud/capabilities?
format=json-->true
</isSupportInterconnection>
<isSupportHPVehicleStatus>
<!--ro, opt, bool, whether the device supports the platform vehicle status event, desc:eventType: HPVehicleStatus-->true
</isSupportHPVehicleStatus>
<isSupportHPWorkingStatus>
<!--ro, opt, bool, whether the device supports the scheduled platform working status event, desc:eventType: HPWorkingStatus-->true
</isSupportHPWorkingStatus>
<isSupportHPPeopleDetection>
<!--ro, opt, bool, whether the device supports the platform people detection event, desc:eventType: HPPeopleDetection-->true
</isSupportHPPeopleDetection>
<isSupportHPVehicleDoorDetection>
<!--ro, opt, bool, whether the device supports the platform door detection event, desc:eventType: HPVehicleDoorDetection-->true
</isSupportHPVehicleDoorDetection>
<isSupportRoadMaint>
<!--ro, opt, bool, whether the device supports road maintenance, desc:related URI: /ISAPI/Intelligent/channels/<ID>/roadMaint?format=json-->true
</isSupportRoadMaint>
<isSupportDockStationInfo>
<!--ro, opt, bool, whether the device supports the event of uploading the dock station information to the media, desc:eventType: dockStationInfo; this
node is not returned if not supported-->true
</isSupportDockStationInfo>
<isSupportBodyCameraManualForensics>
<!--ro, opt, bool, whether the device supports the event of uploading the manual evidence information of the body camera, desc:eventType:
bodyCameraManualForensics; this node is not returned if not supported-->true
</isSupportBodyCameraManualForensics>
<isSupportBodyCameraLogin>
<!--ro, opt, bool, whether the device supports the police logging in to the body camera event, desc:eventType: bodyCameraLogin; this node is not
returned if not supported-->true
</isSupportBodyCameraLogin>
<isSupportBodyCameraRunStatus>
<!--ro, opt, bool, whether the device supports the status of body camera, desc:eventType: bodyCameraRunStatus; this node is not returned if not
supported-->true
</isSupportBodyCameraRunStatus>

m
<isSupportBodyCameraSignIn>

co
<!--ro, opt, bool, whether the device supports the police of the body camera signing in, desc:eventType: bodyCameraSignIn; this node is not returned if
not supported-->true
</isSupportBodyCameraSignIn>

a.
<isSupportAlertDistribution>
<!--ro, opt, bool, whether the device supports the alert distribution, desc:eventType: alertDistribution; this node is not returned if not supported--
>true

C. arc
</isSupportAlertDistribution>
<isSupportImageCapture>
<!--ro, opt, bool, whether the device supports the event of scheduled capture, desc:related URI: /ISAPI/System/Video/inputs/channels/<ID>/imageCapture?
format=json-->true

s, em
</isSupportImageCapture>

A
<isSupportScheduledRecordUpload>

no fr
<!--ro, opt, bool, whether the device supports the event of channel scheduled recording, desc:related URI:
/ISAPI/System/Video/inputs/channels/<ID>/scheduledRecordUpload?format=json-->true
</isSupportScheduledRecordUpload>

ri on
<isSupportTargetPatternCollect>
<!--ro, opt, bool, whether the device supports the target track collection event, desc:eventType: targetPatternCollect-->true
</isSupportTargetPatternCollect>

Ma oc
<isSupportAudioAnalysis>
<!--ro, opt, bool, whether the device supports the audio analysis event, desc:eventType: audioAnalysis; this node is not returned if not supported--
up
>true
</isSupportAudioAnalysis>
<isSupportDebuggingDataExport>
co gr

<!--ro, opt, bool, whether the device supports importing the parameters (in-out parameters, rule configuration parameters), desc:related URI:
/ISAPI/System/debuggingData/parameters?format=json; this node is not returned if not supported-->true
</isSupportDebuggingDataExport>
es a@

<isSupportInternalParaAdjust>
<!--ro, opt, bool, whether the device supports trinocular device; whether the device supports editing in-parameters, desc:related URI:
/ISAPI/System/internalParameters/adjustment?format=json; this node is not returned if not supported-->true
Fr rc

</isSupportInternalParaAdjust>
<isSupportManualImageCapture>
y ema

<!--ro, opt, bool, whether the device supports manual capture of the video channel, desc:related URI:
/ISAPI/System/Video/inputs/channels/<ID>/manualImageCapture?format=json; this node is not returned if not supported-->true
</isSupportManualImageCapture>
<characteristicCode min="1" max="128">
os fr

<!--ro, opt, string, device attribute code, range:[1,128], attr:min{opt, string},max{opt, string}, desc:related URI:
/ISAPI/System/deviceInfo/characteristicCode?format=json-->test
</characteristicCode>
ad on

<isSupportSIMCardStatus>
<!--ro, opt, bool, whether the device supports getting the information of SIM card status, desc:related URI: /ISAPI/System/SIMCardStatus?format=json--
>true
el .c

</isSupportSIMCardStatus>
<OpenPlatformCap>
ez

<!--ro, opt, object, detailed HEOP capability supported by the device, desc:related URI: /ISAPI/Custom/OpenPlatform/capabilities-->
<isSupportOpenPlatform>
<!--ro, req, bool, whether the device supports HEOP (Embedded Open Platform)-->true
en

</isSupportOpenPlatform>
<maxAPPNum>
<!--ro, req, int, the maximum number of third-party application programs allowed to be installed-->0
im

</maxAPPNum>
ng

</OpenPlatformCap>
Aj

<isSupportLogException>
<!--ro, opt, bool, whether the device supports the log exception alarm, desc:eventType: logException-->true
Co

</isSupportLogException>
<isSupportMEF>
<!--ro, opt, bool, whether the device supports Mobile electronic fence - mobile electronic fence data detection, desc:related URI:
/ISAPI/System/Network/MEF/<ID>?format=json-->true
</isSupportMEF>
<manualEvent opt="fielddetection,linedetection,ANPR,faceCapture,mixedTargetDetection,studentsStoodUp,headRiseRate,teacherBehavior">
<!--ro, opt, string, whether the device supports URI for mannual triggering event, attr:opt{req, string}, desc:related URI:
/ISAPI/Intelligent/channels/<ID>/manualEvent/<eventType>?format=json-->test
</manualEvent>
<isSupportAppCfg>
<!--ro, opt, bool, whether the device supports application management, desc:related URI: /ISAPI/System/app/capabilities?format=json-->true
</isSupportAppCfg>
<isSupportCleanUp>
<!--ro, opt, bool, whether the device supports one-push clearing, desc:related URI: /ISAPI/System/cleanup?format=json-->true
</isSupportCleanUp>
<isSupportEndUserCheckMsg opt="sleep,reboot,factoryReset,cleanup,parentPickUpQuery,schoolAttendanceQuery,screenShare,screenMirror">
<!--ro, opt, bool, whether the device supports uploading the confirmation information of end users, attr:opt{req, string}, desc:eventType:
endUserCheckMsg-->true
</isSupportEndUserCheckMsg>
<isSupportScreenConfig>
<!--ro, opt, bool, whether the device supports configuring screen parameters, desc:related URI: /ISAPI/System/screenConfig/capabilities?format=json--
>true
</isSupportScreenConfig>
<isSupportTemperatureMonitor>
<isSupportTemperatureMonitor>
<!--ro, opt, bool, whether the device supports temperature monitoring configuration, desc:related URI: /ISAPI/System/temperatureMonitor/capabilities?
format=json-->true
</isSupportTemperatureMonitor>
<isSupportObjectServer>
<!--ro, opt, bool, whether the device supports the object storage service, desc:related URI: /ISAPI/System/objectServer/capabilities?format=json-->true
</isSupportObjectServer>
<isSupportCDsStatus>
<!--ro, opt, bool, whether the device supports notifying disk status, desc:related URI for enabling the function: the bEnableCDsStatus node of
/ISAPI/Trial/roompara/capabilities; corresponding event: CDsStatus-->true
</isSupportCDsStatus>
<isSupportCoalGangueDetection>
<!--ro, opt, bool, whether the device supports coal gangue detection, desc:related URI: /ISAPI/Intelligent/channels/<channelID>/coalGangueDetection;
this node is not returned if not supported-->true
</isSupportCoalGangueDetection>
<isSupportVacantSeatRate>

m
<!--ro, opt, bool, whether the device supports seat vacancy detection, desc:related URI: /ISAPI/Intelligent/channels/<channelID>/vacantSeatRate?
format=json; corresponding event: VacantSeatRate; this node is not returned if not supported-->true

co
</isSupportVacantSeatRate>
<isSupportObjectsThrownDetection>

a.
<!--ro, opt, bool, whether the device supports objects thrown detection, desc:related URI:
/ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json; corresponding event: objectsThrownDetection; this node is not returned if not
supported-->true

C. arc
</isSupportObjectsThrownDetection>
<isSupportBVCorrectDataSearch>
<!--ro, opt, bool, whether the device supports searching for the parameters of camera correction, desc:related URI: /ISAPI/System/BVCorrectData/search?
format=json; this node is not returned if not supported-->true

s, em
</isSupportBVCorrectDataSearch>
<isSupportSlagTruckWashingDetection>

A
<!--ro, opt, bool, whether the device supports slag truck washing detection, desc:eventType: slagTruckWashingDetection-->true

no fr
</isSupportSlagTruckWashingDetection>
<isSupportWOL>

ri on
<!--ro, opt, bool, whether the device supports configuring the LAN wakeup parameters, desc:it can be realized via the WOL (Wake On-Lan) function.
Related URL: /ISAPI/System/WOL/capabilities?format=json-->true
</isSupportWOL>

Ma oc
<isSupportPersonQueueTimingStatistics>
<!--ro, opt, bool, whether the device supports schedule person queue counting statistics, desc:eventType: isSupportPersonQueueTimingStatistics-->true
</isSupportPersonQueueTimingStatistics>
up
<isSupportLensParamFile>
<!--ro, opt, bool, whether the device supports importing and exporting camera parameters files-->true
</isSupportLensParamFile>
co gr

<isSupportVehiclePassingInParkingLot>
<!--ro, opt, bool, whether the device supports the detection of vehicle passing in parking lot entrance and exit, desc:eventType:
es a@

vehiclePassingInParkingLot-->true
</isSupportVehiclePassingInParkingLot>
<isSupportPowerOutput>
Fr rc

<!--ro, opt, bool, whether power supply output configuration is supported, desc:related URL: /ISAPI/System/powerOutput/capabilities?format=json-->true
</isSupportPowerOutput>
<isSupportIPCUpgradeByFTP>
y ema

<!--ro, opt, bool, it indicates that the device supports upgrading the proxy device channel, such as IPC upgrade via NVR, desc:related URI:
/ISAPI/System/IPCUpgrade/<channelID>/FTP?format=json&security=<security>&iv=<iv>-->true
</isSupportIPCUpgradeByFTP>
<isSupportMethaneConcentrationException>
os fr

<!--ro, opt, bool, whether the device supports methane concentration exception detection, desc:eventType: methaneConcentrationException-->true
</isSupportMethaneConcentrationException>
ad on

<isSupportMethaneLightIntensityException>
<!--ro, opt, bool, whether the device supports methane light intensity exception detection, desc:eventType: methaneLightIntensityException-->true
</isSupportMethaneLightIntensityException>
el .c

<isSupportLocalButtonPermission>
<!--ro, opt, bool, whether the device supports controlling local button permission, desc:related URI: /ISAPI/System/localButtonPermission/capabilities?
format=json-->true
ez

</isSupportLocalButtonPermission>
<isSupportLocalButtonRecord>
en

<!--ro, opt, bool, whether the device supports button triggering record, desc:eventType: localButtonRecord-->true
</isSupportLocalButtonRecord>
<isSupportLocalButtonSnapshot>
im

<!--ro, opt, bool, whether the device supports button triggering snapshot, desc:eventType: localButtonSnapshot-->true
</isSupportLocalButtonSnapshot>
ng

<isSupportVoiceTalkEvent>
Aj

<!--ro, opt, bool, whether the device supports voice talk, desc:eventType: voiceTalkEvent-->true
</isSupportVoiceTalkEvent>
Co

<isSupportPowerSupply>
<!--ro, opt, bool, whether the device supports external power supply, desc:related URI: /ISAPI/System/powerSupply/capabilities?format=json-->true
</isSupportPowerSupply>
<isSupportbarrierGateStatus>
<!--ro, opt, bool, whether the device supports barrier gate status, desc:eventType: barrierGateStatus-->true
</isSupportbarrierGateStatus>
<DeployCap>
<!--ro, opt, object, the capability of alarm non-subscription parameters-->
<deployID opt="1,2">
<!--ro, opt, enum, arming type, subType:int, attr:opt{req, string}, desc:0-device alarm; 1-real-time alarm-->0
</deployID>
</DeployCap>
<isSupportSignalControllerStatus>
<!--ro, opt, bool, whether the device supports uploading the signal controller status, desc:eventType: signalControllerStatus-->true
</isSupportSignalControllerStatus>
<isSupportSignalControllerFault>
<!--ro, opt, bool, whether the device supports uploading the signal controller fault, desc:eventType: signalControllerFault-->true
</isSupportSignalControllerFault>
<isSupportNTPConfig>
<!--ro, opt, bool, whether the device supports configuring NTP parameters, desc:/ISAPI/System/time/ntp/capabilities?format=json-->true
</isSupportNTPConfig>
<isSupportConsumptionQuery>
<!--ro, opt, bool, whether the device supports uploading the request for searching for consumption, desc:eventType: ConsumptionQuery-->true
<!--ro, opt, bool, whether the device supports uploading the request for searching for consumption, desc:eventType: ConsumptionQuery-->true
</isSupportConsumptionQuery>
<StreamingCodingRegionPositionCap>
<!--ro, opt, object, whether the device supports getting all stream splice area positions information capability,
desc:/ISAPI/System/streamingCoding/channels/<channelID>/regionPosition-->
<ChannelsList>
<!--ro, opt, array, channel list, subType:object-->
<channelsID>
<!--ro, req, int, No. of channels supported by the device-->1
</channelsID>
</ChannelsList>
</StreamingCodingRegionPositionCap>
<isSupportLowPowerPlan>
<!--ro, opt, bool, whether the device supports configuring low consumption mode schedule, desc:related URI:
/ISAPI/System/consumptionMode/lowPowerPlan/capablities?format=json-->true
</isSupportLowPowerPlan>
<isSupportPlateQuaAlarm>

m
<!--ro, opt, bool, whether the device supports plate quality detection, desc:eventType: plateQuaAlarm-->true

co
</isSupportPlateQuaAlarm>
<isSupportWiegand>
<!--ro, opt, bool, whether the device supports the Wiegand protocol, desc:related URI: /ISAPI/System/Wiegand/<wiegandID>/capabilities?format=json-->true

a.
</isSupportWiegand>
<zoomFocusWebDisplay

C. arc
opt="ROI,roadTrafficDetection,SMD,mixedTargetDetection,faceCapture,personCounting,multidimensionalPeopleCounting,AIOP,heelPDC,packingSpaceRecognition,tunnel
Detection,cityManagement">
<!--ro, opt, string, whether the web supports displaying the zoomfocus page, attr:opt{req, string},
desc:ROI page path: Configuration—Vedio/Audio—ROI
roadTrafficDetection:Configuration—Road Traffic—Detection Configuration; SMD; mixedTargetDetection; faceCapture-->ROI

s, em
</zoomFocusWebDisplay>

A
<isSupportInternalParamsAdjustment>

no fr
<!--ro, opt, bool, whether the device supports in-parameters correction by region, desc:true (support), false or this node is not returned (not
support). Related URI: /ISAPI/System/internalParameters/regionAdjustment/capabilities?format=json-->true
</isSupportInternalParamsAdjustment>

ri on
<isSupportDiagnosticReport>
<!--ro, opt, bool, whether the device supports diagnostic report function, desc:true (support), false or this node is not returned (not support).
Related URI: /ISAPI/System/diagnosticReport/capabilities?format=json-->true

Ma oc
</isSupportDiagnosticReport>
<isSupportWaterQualitySearch>
up
<!--ro, opt, bool, whether the device supports the function of searching for water quality, desc:true (support), false or this node is not returned (not
support). Related URI: /ISAPI/Event/waterQualityDetection/search?format=json-->true
</isSupportWaterQualitySearch>
co gr

<isSupportExhaustDetection>
<!--ro, opt, bool, whether the device supports configuring gas detection parameters, desc:true (support), false or this node is not returned (not
support). Related URI: /ISAPI/Event/exhaustDetection/channels/<channelID>/capabilities?format=json-->true
es a@

</isSupportExhaustDetection>
<isSupportTPMSecretKey>
Fr rc

<!--ro, opt, bool, whether the device supports enable stream encryption on all TPM keys lists, desc:true (support), false or this node is not returned
s

(not support). Related URI: /ISAPI/Streaming/encryption/TPMSecretKeyList?format=json&security=<security>&iv=<iv>-->true


</isSupportTPMSecretKey>
y ema

<isSupportWeatherStation>
<!--ro, opt, bool, whether the device supports uploading weather station information, desc:eventType: weatherStation; this node is not returned if not
supported-->true
</isSupportWeatherStation>
os fr

<isSupportRoadVisibilityAnalysis>
<!--ro, opt, bool, whether the device supports road visibility detection analysis, desc:eventType: weatherStation; this node is not returned if not
supported-->true
ad on

</isSupportRoadVisibilityAnalysis>
<isSupportRoadWeatherAnalysis>
<!--ro, opt, bool, whether the device supports road weather detection analysis, desc:eventType: roadWeatherAnalysis; this node is not returned if not
el .c

supported-->true
</isSupportRoadWeatherAnalysis>
ez

<isSupportRoadVisibilityAbnormal>
<!--ro, opt, bool, whether the device supports uploading road visibility detection exception, desc:eventType: roadVisibilityAbnormal; this node is not
returned if not supported-->true
en

</isSupportRoadVisibilityAbnormal>
<isSupportRoadWeatherAbnormal>
<!--ro, opt, bool, whether the device supports uploading road weather detection exception, desc:eventType: roadWeatherAbnormal; this node is not
im

returned if not supported-->true


ng

</isSupportRoadWeatherAbnormal>
Aj

<isSupportChannelsTimeSync>
<!--ro, opt, bool, whether the device supports batch device time synchronization of the IPC/IOT channel, desc:related URL:
Co

/ISAPI/System/time/channelsTimeSync/capabilities?format=json-->true
</isSupportChannelsTimeSync>
<isSupport433Sensor>
<!--ro, opt, bool, whether the device supports configuring 433 sensor transmission,
desc:related URLs: /ISAPI/System/Sensor/433sensor/433wirelessTransfer/capabilities?format=json
/ISAPI/System/Sensor/433sensor/capabilities?format=json
/ISAPI/System/Sensor/433sensor/sensorDetection/capabilities?format=json
/ISAPI/System/Sensor/433sensor/sensorPicOverlay/capabilities?format=json
/ISAPI/System/Sensor/433sensor/rfParamTemplate/capabilities?format=json-->true
</isSupport433Sensor>
<isSupportSignalSource>
<!--ro, opt, bool, whether the device supports configuring signal source parameters, desc:related URL: /ISAPI/System/signalSource/capabilities?
format=json-->true
</isSupportSignalSource>
<isSupportUSBConfig>
<!--ro, opt, bool, whether the device supports configuring USB parameters, desc:related URL: /ISAPI/System/USBConfig/capabilities?format=json-->true
</isSupportUSBConfig>
<isSupportStandbyStrategy>
<!--ro, opt, bool, whether the device supports configuring standby strategy parameters, desc:related URL: /ISAPI/System/standbyStrategy/capabilities?
format=json-->true
</isSupportStandbyStrategy>
<isSupportWakeupStrategy>
<!--ro, opt, bool, whether the device supports configuring wakeup strategy parameters, desc:related URL: /ISAPI/System/wakeupStrategy/capabilities?
format=json-->true
format=json-->true
</isSupportWakeupStrategy>
<isSupportSeachMutexFunction>
<!--ro, opt, bool, whether the device supports searching for disabling the mutual exclusion function, desc:related URL: GET
/ISAPI/System/mutexFunction/capabilities?format=json; function description: whether the device supports searching for mutual exclusion function-->true
</isSupportSeachMutexFunction>
<isSupportMultiDeviceID>
<!--ro, opt, bool, whether the device supports multiple long numbers configuration, desc:related URL:
/ISAPI/VideoIntercom/deviceId/batchCfg/capabilities?format=json-->true
</isSupportMultiDeviceID>
<isNotSupportMultiDeviceIDCustomName>
<!--ro, opt, bool, whether the device supports configuring custom name for multiple long numbers, desc:if this function is not supported, the user
cannot configure custom name for the device via the long number configuration API; true (not support), false or this node is not returned (support)-->true
</isNotSupportMultiDeviceIDCustomName>
<isSupportMixedSecurityChecking>
<!--ro, opt, bool, whether the device supports uploading the event of mixed security checking, desc:eventType: mixedSecurityChecking-->true

m
</isSupportMixedSecurityChecking>
<isSupportVisiblePackageEvent>

co
<!--ro, opt, bool, whether the device supports visible package event, desc:eventType: visiblePackageEvent-->true
</isSupportVisiblePackageEvent>

a.
<isSupportBarCodeEvent>
<!--ro, opt, bool, whether the device supports the barcode event-->true
</isSupportBarCodeEvent>

C. arc
<isSupportGaugeReading>
<!--ro, opt, bool, whether the device supports the gauge reading function, desc:related URL: GET
/ISAPI/Event/channels/<channelID>/gaugeReading/capabilities?format=json; this node is not returned if not supported-->true
</isSupportGaugeReading>

s, em
<isSupportUncertificateCompareEvent>
<!--ro, opt, bool, whether the device supports the UncertificateCompareEvent event, desc:eventType: UncertificateCompareEvent; this node is not returned

A
if not supported-->true

no fr
</isSupportUncertificateCompareEvent>
<isSupportAudioDiacritical>

ri on
<!--ro, opt, bool, whether the device supports audio voice changing function, desc:related URL:
/ISAPI/System/Video/inputs/channels/<channelID>/audioDiacritical/capabilities?format=json-->true
</isSupportAudioDiacritical>

Ma oc
<isSupportMEFReportSearch>
<!--ro, opt, bool, whether the device supports searching for electronic fence data statistics report, desc:URL for getting the capability:
/ISAPI/System/Network/MEF/reportSearch/capabilities?format=json; this node is not returned if not supported-->true
up
</isSupportMEFReportSearch>
<isSupportBroadcastTriggerEvent>
co gr

<!--ro, opt, bool, whether the device supports broadcast triggering event, desc:after the event is uploaded to the platform via the paging microphone,
the platform will broadcast and check according to the uploaded terminal No. list; eventType: broadcastTriggerEvent. URL for checking:
/ISAPI/VideoIntercom/broadcastTriggerConfirm?format=json-->true
es a@

</isSupportBroadcastTriggerEvent>
<isSupportFishingShipDetection>
<!--ro, opt, bool, whether the device supports fishing ship detection event, desc:eventType: fishingShipDetection; related URL:
Fr rc

/ISAPI/Thermal/channels/<channelID>/fishingShipDetection/<SID>?format=json-->true
</isSupportFishingShipDetection>
<isSupportHPVehicleLoadingRate>
y ema

<!--ro, opt, bool, whether the device supports the platform vehicle loading rate event, desc:eventType: vehicleLoadingRate, this node is not returned if
not supported. Related URL: /ISAPI/Intelligent/channels/<channelID>/HPDetection/capabilities?format=json-->true
</isSupportHPVehicleLoadingRate>
<isSupportVideoBarrierGateDetection>
os fr

<!--ro, opt, bool, whether the device supports port and gate video detection, desc:eventType: videoBarrierGateDetection, this node is not returned if
not supported. Related URL: /ISAPI/Traffic/ContentMgmt/videoBarrierGate/capabilities?format=json-->true
ad on

</isSupportVideoBarrierGateDetection>
<isSupportLogicalResource>
<!--ro, opt, bool, whether the device supports camera organization and management, desc:related URL: /ISAPI/System/LogicalResource/capabilities?
el .c

format=json, this node is not returned if not supported-->true


</isSupportLogicalResource>
<isSupportSlagTruckCoverPlate>
ez

<!--ro, opt, bool, whether the device supports detecting whether back cover the slag truck is covered, desc:eventType: slagTruckCoverPlateDetection,
this node is not returned if not supported. Related URL: /ISAPI/Event/channels/<channelID>/slagTruckCoverPlate/capabilities?format=json-->true
en

</isSupportSlagTruckCoverPlate>
<isSupportTrainDetection>
<!--ro, opt, bool, whether the device supports train detection, desc:eventType: trainDetection, this node is not returned if not supported-->true
im

</isSupportTrainDetection>
<isNotSupportVideoOverlays>
ng

<!--ro, opt, bool, whether the device supports configuring OSD overlaying of web display, desc:this node is only valid for checking whether the OSD
Aj

overlaying configuration of the image menu of the security inspection system is supported or not (this configuration is supported by default in the protocol
Co

and it does not have node control capability). If true is returned, it indicates that the OSD overlay is not supported; if false or no node is returned, it
indicates the OSD overlay function is supported-->true
</isNotSupportVideoOverlays>
<isSupportScheduledCaptureTask>
<!--ro, opt, bool, whether the device supports scheduled capturing tasks, desc:related URI: /ISAPI/Sytem/Video/scheduledCapture/capabilities-->true
</isSupportScheduledCaptureTask>
<isSupportGuideCfg>
<!--ro, opt, bool, whether the device supports the wizard configuration, desc:this node is only valid for the indoor station to check whether to enable
wizard configuration wizard configuration is provided for the users to perform basic function configuration after activating and logging in to the device
(including Internet parameters configuration, dialog configuration and batch adding of the analog indoor station) if true is returned, it indicates wizard
configuration is supported; if false or no node is returned, it indicates the function is not supported-->true
</isSupportGuideCfg>
<isSupportCameraGroupPeopleCounting>
<!--ro, opt, bool, whether the device supports passenger flow statistics of multiple cameras, desc:/ISAPI/Intelligent/counting/cameraGroup/capabilities?
format=json-->true
</isSupportCameraGroupPeopleCounting>
<isSupportAngleDeviationDetection>
<!--ro, opt, bool, whether the device supports tilting detection, desc:related URL:
/ISAPI/Event/channels/<channelID>/angleDeviationDetection/capabilities?format=json; this node is not returned if not supported-->true
</isSupportAngleDeviationDetection>
<isSupportCityCode>
<!--ro, opt, bool, whether the device supports getting city code, desc:related URI: /ISAPI/System/cityCode?format=json-->true
</isSupportCityCode>
<isSupportAlcoholDetectionResult>
<isSupportAlcoholDetectionResult>
<!--ro, opt, bool, whether the device supports uploading alcohol test, desc:eventType: alcoholDetectionResult-->true
</isSupportAlcoholDetectionResult>
<isSupportAlcoholDetectionRodBind>
<!--ro, opt, bool, whether the device supports the request of binding alcohol test stick, desc:eventType: alcoholDetectionRodBind-->true
</isSupportAlcoholDetectionRodBind>
<isSupportAlcoholDetectionRodBindQuery>
<!--ro, opt, bool, whether the device supports the query for the request of binding alcohol test stick, desc:eventType: alcoholDetectionRodBindQuery--
>true
</isSupportAlcoholDetectionRodBindQuery>
<isSupportAlcoholDetectionRodUnbind>
<!--ro, opt, bool, whether the device supports the event of unbinding alcohol test stick, desc:eventType: alcoholDetectionRodUnbind-->true
</isSupportAlcoholDetectionRodUnbind>
<isSupportAbnormalDriving>
<!--ro, opt, bool, whether the device supports abnormal driving behaviors detection, desc:eventType: abnormalDriving-->true
</isSupportAbnormalDriving>
<isSupportEmanationsEvent>

m
<!--ro, opt, bool, whether the device supports the event of emanation test, desc:eventType: emanationsEvent; the security inspection system is equipped

co
with an emanation tester, and when the emanation exceeds the threshold, an alarm event will be uploaded currently, this event is only triggered by the
emanation tester, and its configuration is not required-->true
</isSupportEmanationsEvent>

a.
<isSupportClientUpdatePackage>
<!--ro, opt, bool, whether the device supports the client upgrade package management, desc:related URL: /ISAPI/System/clientUpdatePackage/capabilities?

C. arc
format=json-->true
</isSupportClientUpdatePackage>
<isSupportDeviceStatusUploadStrategy>
<!--ro, opt, bool, whether the device supports configuring the parameters of device status uploading strategy, desc:related URL:

s, em
/ISAPI/System/status/uploadStrategy/capabilities?format=json-->true
</isSupportDeviceStatusUploadStrategy>

A
<isSupportDialIndicatorReading>

no fr
<!--ro, opt, bool, whether the devices supports dial indicator reading, desc:related URL:
/ISAPI/Intelligent/channels/<channelID>/dialIndicatorReading/capabilities?format=json; function description: it supports reading single pointer dial and
uploading the result (currently, it only can recognize dials that does not accumulate the readings such as thermometer and barometer)-->true

ri on
</isSupportDialIndicatorReading>
<isNotSupportAudioVideoCompress>

Ma oc
<!--ro, opt, bool, whether the device supports audio/video encoding, desc:this node is only valid for the; if true is returned, the video/audio page
will not be displayed on the device web page if false or no node is returned, the video/audio page will be displayed on the device web page by default--
>true
up
</isNotSupportAudioVideoCompress>
<isSupportUPLCExceptionEvent>
<!--ro, opt, bool, whether the device supports the event of liquid chromatograph system exception, desc:eventType: UPLCException-->true
co gr

</isSupportUPLCExceptionEvent>
<isSupportUrgentTurn>
<!--ro, opt, bool, whether the device supports the sharp turn event, desc:eventType: urgentTurn-->true
es a@

</isSupportUrgentTurn>
<isSupportUrgentBrake>
Fr rc

<!--ro, opt, bool, whether the device supports the sudden brake event, desc:eventType: urgentBrake-->true
s

</isSupportUrgentBrake>
<isSupportUrgentAcceleration>
y ema

<!--ro, opt, bool, whether the device supports the rapid acceleration event, desc:eventType: urgentAcceleration-->true
</isSupportUrgentAcceleration>
<isSupportVehiclePanicButton>
<!--ro, opt, bool, whether the device supports the alarm/event of mobile emergency button, desc:eventType: vehiclePanicButton-->true
os fr

</isSupportVehiclePanicButton>
<isSupportOverSpeed>
<!--ro, opt, bool, whether the device supports the vehicle speeding alarm/event, desc:eventType: overSpeed-->true
ad on

</isSupportOverSpeed>
<isSupportAbnormalAcceleration>
el .c

<!--ro, opt, bool, whether the device supports the event of abnormal vehicle custom acceleration alarm, desc:eventType: abnormalAcceleration-->true
</isSupportAbnormalAcceleration>
<isSupportRollover>
ez

<!--ro, opt, bool, whether the device supports the vehicle turnover alarm/event, desc:eventType: rollover-->true
</isSupportRollover>
<isSupportCollision>
en

<!--ro, opt, bool, whether the device supports the vehicle collision alarm/event, desc:eventType: collision-->true
</isSupportCollision>
im

<isSupportVehicleOBUInfo>
<!--ro, opt, bool, whether the device supports uploading the vehicle OBU information, desc:eventType: vehicleOBUInfo-->true
ng

</isSupportVehicleOBUInfo>
Aj

<isSupportPowerUpPicture>
<!--ro, opt, bool, whether the device supports importing and exporting pictures displayed during startup,
Co

desc:/ISAPI/System/powerUpPicture/capabilities?format=json-->true
</isSupportPowerUpPicture>
<isSupportPowerUpPictureCfg>
<!--ro, opt, bool, whether the device supports configuring parameters of pictures displayed during startup,
desc:/ISAPI/System/powerUpPictureCfg/capabilities?format=json-->true
</isSupportPowerUpPictureCfg>
<isSupportAlgoPackageScheduling>
<!--ro, opt, bool, whether the device supports algorithm package scheduling, desc:Related URIs: /ISAPI/System/AlgoPackageScheduling/capabilities?
format=json and /ISAPI/System/AlgoPackageScheduling/task/capabilities?format=json-->true
</isSupportAlgoPackageScheduling>
<isSupportVoiceTalkRequestingAlarm>
<!--ro, opt, bool, whether the device supports the two-way audio request alarm, desc:eventType: voiceTalkRequestingAlarm-->true
</isSupportVoiceTalkRequestingAlarm>
<isSupportSetupStructure>
<!--ro, opt, bool, whether the device supports configuring construction structure parameters, desc:related URI: /ISAPI/System/setupStructure?
format=json-->true
</isSupportSetupStructure>
<isSupportPassNumInfoEvent>
<!--ro, opt, bool, whether the device supports uploading the number of people passed, desc:eventType: passNumInfoEvent-->true
</isSupportPassNumInfoEvent>
<isShowClientRemote>
<!--ro, opt, bool, whether the device supports displaying remote configuration on the client,
desc:1. If this node is not returned or it is returned and its value is true, it indicates that the device supports this function.
2. If this node is returned and its value is false, it indicates that the device does not support this function.
iVMS-4200 client software supports remote configuration by default. However, there are still some devices that do not support remote configuration via iVMS-
4200 and they can only be configured remotely via the web browser. The capability determined by this node is used to control whether to display the remote
configuration on iVMS-4200 client software.-->true
</isShowClientRemote>
<isSupportUserManualQRCode>
<!--ro, opt, bool, whether the device supports getting the QR code of the user manual, desc:related URI: /ISAPI/System/userManualQRCode/capabilities?
format=json-->true
</isSupportUserManualQRCode>
<isSupportUnclosedFrontPanel>
<!--ro, opt, bool, whether the device supports uploading the event of the front panel not closed, desc:related URI for getting the capability:
/ISAPI/Trial/roompara/capabilities; corresponding node: < unclosedFrontPanelEnabled>. Related event: unclosedFrontPanel-->true
</isSupportUnclosedFrontPanel>
<isSupportVehicleWeight>
<!--ro, opt, bool, whether the device supports configuring parameters for vehicle weight and axle detection,
desc:/ISAPI/Traffic/channels/<channelID>/vehicleWeight?format=json-->true

m
</isSupportVehicleWeight>

co
<isSupportWeightInterface>
<!--ro, opt, bool-->true
</isSupportWeightInterface>

a.
<isSupportSecurityPanicEvent>
<!--ro, opt, bool, whether the device supports emergency events of security inspection, desc:eventType: securityPanicEvent-->true
</isSupportSecurityPanicEvent>

C. arc
<isSupportTrafficLightMalfunction>
<!--ro, opt, bool, whether the device supports the event of detecting faults of traffic lights, desc:eventType: trafficLightMalfunction-->true
</isSupportTrafficLightMalfunction>
<isSupportTOFShelterAlarm>

s, em
<!--ro, opt, bool, whether the device supports TOF tampering alarm, desc:/ISAPI/Event/channels/<channelID>/TOFShelterAlarm/capabilities?format=json--
>true

A
</isSupportTOFShelterAlarm>

no fr
<isSupportSetMealQuery>
<!--ro, opt, bool, whether the device supports uploading the event of searching set meals, desc:eventType: SetMealQuery-->true

ri on
</isSupportSetMealQuery>
<isSupportMultiScreenControlAlarm>
<!--ro, opt, bool, whether the device supports uploading the multi-screen controller alarm, desc:eventType: multiScreenControlAlarm-->true

Ma oc
</isSupportMultiScreenControlAlarm>
<isSupportKeyFrameLoss>
<!--ro, opt, bool, whether the device supports uploading the event of key frame loss, desc:related URI: /ISAPI/Event/keyFrameLoss/capabilities?
up
format=json; eventType: keyFrameLoss.-->true
</isSupportKeyFrameLoss>
co gr

<isSupportWorkStatusCfg>
<!--ro, opt, bool, whether the device supports working status configuration, desc:/ISAPI/System/WorkStatusCfg?format=json-->true
</isSupportWorkStatusCfg>
es a@

<isSupportHealthInfoSyncQuery>
<!--ro, opt, bool, whether the device supports the event of searching for health information, desc:eventType: HealthInfoSyncQuery-->true
</isSupportHealthInfoSyncQuery>
Fr rc

<isSupportVisitorPictureSearchEvent>
<!--ro, opt, bool, whether the device supports the event of searching for visitor profiles, desc:eventType: VisitorPictureSearchEvent-->true
y ema

</isSupportVisitorPictureSearchEvent>
<isSupportEZVIZParameterTest>
<!--ro, opt, bool, whether the device supports testing EZ parameters, desc:related URI: /ISAPI/System/Network/EZVIZ/parameterTest?format=json-->true
</isSupportEZVIZParameterTest>
os fr

<isSupportUnattendedPackageEvent>
<!--ro, opt, bool, whether the device supports the unattended package event, desc:eventType: unattendedPackageEvent-->true
</isSupportUnattendedPackageEvent>
ad on

<isSupportPackageFragmentEvent>
<!--ro, opt, bool, whether the device supports the event of uploading package fragment data, desc:eventType: packageFragmentEvent-->true
</isSupportPackageFragmentEvent>
el .c

<isSupportPackageBarcodeMismatchEvent>
<!--ro, opt, bool, whether the device supports the event of package and barcode mismatching, desc:eventType: packageBarcodeMismatchEvent-->true
ez

</isSupportPackageBarcodeMismatchEvent>
<isSupportCheckingModeSwitchEvent>
<!--ro, opt, bool, whether the device supports the event of switching the image checking mode, desc:eventType: checkingModeSwitchEvent-->true
en

</isSupportCheckingModeSwitchEvent>
<FaceSnapPrivacyMask>
<!--ro, opt, object, whether the device supports privacy mask on faces, desc:based on face picture capture, all faces will be masked to protect the
im

privacy. Related URI: /ISAPI/Intelligent/channels/<channelID>/faceSnap/privacyMask/capabilities?format=json-->


<ChannelsList>
ng

<!--ro, opt, array, channel list, subType:object-->


Aj

<channelsID>
Co

<!--ro, req, int, No. of channels supported by the device-->1


</channelsID>
</ChannelsList>
</FaceSnapPrivacyMask>
<FaceContrastPrivacyMask>
<!--ro, opt, object, whether the device supports privacy mask on faces of key persons, desc:based on face picture comparison, the faces of key persons
will be masked to protect the privacy. Related URI: /ISAPI/Intelligent/channels/<channelID>/faceContrast/privacyMask/capabilities?format=json-->
<ChannelsList>
<!--ro, opt, array, channel list, subType:object-->
<channelsID>
<!--ro, req, int, No. of channels supported by the device-->1
</channelsID>
</ChannelsList>
</FaceContrastPrivacyMask>
<isSupportHumanBodyComparison>
<!--ro, opt, bool, whether the device supports human body comparison events, desc:related URI:
/ISAPI/Event/channels/<channelID>/humanBodyComparison/capabilities?format=json; eventType: humanBodyComparison-->true
</isSupportHumanBodyComparison>
<isSupportMedicalInfoSearchEvent>
<!--ro, opt, bool, whether the device supports the event of searching for medical information, desc:medicalInfoSearchEvent-->true
</isSupportMedicalInfoSearchEvent>
<isSupportConsumptionStatusQuery>
<!--ro, opt, bool, whether the device supports uploading the request for searching for consumption status, desc:eventType: ConsumptionStatusQuery-->true
</isSupportConsumptionStatusQuery>
</isSupportConsumptionStatusQuery>
<isSupportShipChannelAbnormal>
<!--ro, opt, bool, whether the device supports uploading ship channel exception detection event, desc:eventType: shipChannelAbnormal-->true
</isSupportShipChannelAbnormal>
<isSupportDepositRetrieveEvent>
<!--ro, opt, bool, whether the device supports object access in the intelligent cabinet-->true
</isSupportDepositRetrieveEvent>
<isSupportDepositTimeoutEvent>
<!--ro, opt, bool, whether the device supports overtime object deposit in the intelligent cabinet-->true
</isSupportDepositTimeoutEvent>
<isSupportCabinetStatusEvent>
<!--ro, opt, bool, whether the device supports the event of intelligent cabinet's changed status-->true
</isSupportCabinetStatusEvent>
<isSupportCabinetAuthorityExpired>
<!--ro, opt, bool, whether the device supports the event of intelligent cabinet's permission expiration-->true
</isSupportCabinetAuthorityExpired>

m
<isSupportT1Test>
<!--ro, opt, bool, whether the device supports the configuration of controlling T1 tool-->true

co
</isSupportT1Test>
<isSupportDrivingDirectionAtIntersection>
<!--ro, opt, bool, whether the device supports intersection driving direction detection, desc:eventType: drivingDirectionAtIntersection; this node is

a.
not returned if not supported-->true
</isSupportDrivingDirectionAtIntersection>

C. arc
<isSupportPlaceSceneExecuteStatus>
<!--ro, opt, bool, whether the device supports the event of place scene execute status, desc:eventType: placeSceneExecuteStatus; this node is not
returned if not supported-->true
</isSupportPlaceSceneExecuteStatus>

s, em
<isSupportSceneRecordingCtrl>
<!--ro, opt, bool, whether the device supports the event of controlling scene recording, desc:eventType: sceneRecordingCtrl; this node is not returned

A
if not supported-->true

no fr
</isSupportSceneRecordingCtrl>
<isSupportStreamRecordStatus>
<!--ro, opt, bool, whether the device supports getting the stream ID record status, desc:/ISAPI/System/Video/inputs/streams/recordStatus-->true

ri on
</isSupportStreamRecordStatus>
<isSupportManualSnapPicture>

Ma oc
<!--ro, opt, bool, whether the device supports manual picture capturing, desc:related URI:
/ISAPI/Streaming/channels/<trackStreamID>/picture/capabilities?format=json-->true
</isSupportManualSnapPicture>
up
<isSupportVerificationResultEvent>
<!--ro, opt, bool, whether the device supports the event of human and vehicle verification result, desc:eventType: verificationResultEvent-->true
</isSupportVerificationResultEvent>
co gr

<OTAP>
<!--ro, opt, object, the capability of Open Things Access Protocol, desc:OTAP capability-->
es a@

<isSupportOTAPModel>
<!--ro, opt, bool, whether the device supports getting the virtual No. and device No. of the OTAP, desc:GET /ISAPI/System/Network/OTAP/Model?
format=json-->true
Fr rc

</isSupportOTAPModel>
s

</OTAP>
<isSupportForeignObjectInRoadDetection>
y ema

<!--ro, opt, bool, whether the device supports the detection of foreign object in road, desc:eventType: foreignObjectInRoadDetection-->true
</isSupportForeignObjectInRoadDetection>
<isSupportUPLCMethodOperatingStatus>
<!--ro, opt, bool, whether the device supports the event of UPLC method operating status, desc:eventType: UPLCMethodOperatingStatus-->true
os fr

</isSupportUPLCMethodOperatingStatus>
<isSupportMaterialScanTaskStatus>
<!--ro, opt, bool, whether the device supports material scanning task status, desc:eventType: materialScanTaskStatus-->true
ad on

</isSupportMaterialScanTaskStatus>
<isSupportSearchInputProxy>
el .c

<!--ro, opt, bool, whether the device supports searching for accessible IPC of device in the LAN, desc:related URI: GET
/ISAPI/ContentMgmt/InputProxy/search?security=<security>&iv=<iv>; true (support), this node is not returned (call the specific API to confirm whether it
supports or not)-->true
ez

</isSupportSearchInputProxy>
<isSupportPostureDetection>
<!--ro, opt, bool, whether the device supports people posture detection, desc:eventType: MeetingLock-->true
en

</isSupportPostureDetection>
<isSupportFans>
im

<!--ro, opt, bool, whether the device supports configuring fan, desc:/ISAPI/System/Fans?format=json-->true
</isSupportFans>
ng

<pickUpCalibration>
Aj

<!--ro, opt, object, whether the device supports wireless pickup calibration, desc:related URI:
/ISAPI/System/PickUpCalibration/channels/<channelID>/capabilities?format=json-->
Co

<ChannelsList>
<!--ro, opt, array, channel list, subType:object-->
<channelsID>
<!--ro, req, int, No. of channels supported by the device-->1
</channelsID>
</ChannelsList>
</pickUpCalibration>
<isSupportSerialLogUpload>
<!--ro, opt, bool, whether the device supports uploading serial port log, desc:true (support), false (not support)-->true
</isSupportSerialLogUpload>
<isSupportLiquidDetectionEvent>
<!--ro, opt, bool, whether the device supports liquid detection, desc:eventType: liquidDetectionEvent-->true
</isSupportLiquidDetectionEvent>
<isSupportETCRSU>
<!--ro, opt, bool, whether the device supports ETCRSU configuration, desc:related URI: /ISAPI/Traffic/ETCRSU level protocol-->true
</isSupportETCRSU>
<isSupportVideoCodeConvertTool>
<!--ro, opt, bool, whether the device supports getting the video encodingconversion tool, desc:related URI: /ISAPI/System/videoCodeConvertTool?
format=json protocol-->true
</isSupportVideoCodeConvertTool>
<supportQuickConfigType opt="icr,dayNightGate,syncSignalOutput">
<!--ro, opt, string, the list of supported functions of the web quick configuration pop-up, attr:opt{opt, string},
desc:the web quick configuration does not distinguish the configuration order, and it displays all supported function lists on the pop-up on the tab page
icr refers to ICR switch configuration (related URL: /ISAPI/Image/channels/<channelID>/); icr
dayNightGate refers to day and night mode switching (related URL: /ISAPI/Image/channels/<channelID>/dayNightGate);
IOOutputs refers to synchronous signal output (related URL: /ISAPI/System/syncSignalOutput)-->syncSignalOutput
</supportQuickConfigType>
<isSupportVisualLocation>
<!--ro, opt, bool, whether the device supports configuring visual location service, desc:related URI:
/ISAPI/System/LocationMgr/visualLocation/capabilities?format=json-->true
</isSupportVisualLocation>
<isSupportVideoAccessAbnormal>
<!--ro, opt, bool, whether the device supports abnormal video access, desc:eventType: VideoAccessAbnormal; this node is not returned if not supported--
>true
</isSupportVideoAccessAbnormal>
<isSupportSubSystemAbnormal>
<!--ro, opt, bool, whether the device supports abnormal subsystem, desc:eventType: SubSystemAbnormal; this node is not returned if not supported-->true
</isSupportSubSystemAbnormal>
<isSupportSearchFileList>

m
<!--ro, opt, bool, whether the device supports searching for list of device files, desc:related URI: /ISAPI/System/fileExport/SearchFileList?

co
format=json-->true
</isSupportSearchFileList>
<isSupportDistanceDetectionEvent>

a.
<!--ro, opt, bool, whether the device supports distance detection, desc:eventType: distanceDetectionEvent; currently it is only used for devices test
tools-->true
</isSupportDistanceDetectionEvent>

C. arc
<isSupportMeetingQueryEvent>
<!--ro, opt, bool, whether the device supports searching for meetings, desc:eventType: MeetingElementCancel-->true
</isSupportMeetingQueryEvent>
<isSupportMeetingLockEvent>

s, em
<!--ro, opt, bool, whether the device supports locking meetings, desc:eventType: MeetingLock-->true

A
</isSupportMeetingLockEvent>

no fr
<isSupportMeetingAddEvent>
<!--ro, opt, bool, whether the device supports reserving meetings, desc:eventType: MeetingAdd-->true
</isSupportMeetingAddEvent>

ri on
<isSupportMeetingModifyEvent>
<!--ro, opt, bool, whether the device supports modifying meetings, desc:eventType: MeetingModify-->true
</isSupportMeetingModifyEvent>

Ma oc
<isSupportMeetingCancelEvent>
<!--ro, opt, bool, whether the device supports canceling meetings, desc:eventType: ScreenBindIPC-->true
up
</isSupportMeetingCancelEvent>
<isSupportScreenBindIPCEvent>
<!--ro, opt, bool, whether the device supports the screen binding IPC, desc:eventType: ScreenBindIPC-->true
co gr

</isSupportScreenBindIPCEvent>
<isSupportSensorDetection>
<!--ro, opt, bool, whether the device supports uploading sensor data, desc:eventType: sensorDetection-->true
es a@

</isSupportSensorDetection>
<isSupportClearLogCache>
<!--ro, opt, bool, whether the device supports clearing the log cache, desc:related URI: /ISAPI/ContentMgmt/ClearLogCache?format=json-->true
Fr rc

</isSupportClearLogCache>
<isSupportRoadOccupyDetection>
y ema

<!--ro, opt, bool, whether the device supports the entrance and exit block detection, desc:related URI:
/ISAPI/ITC/Entrance/channels/<channelID>/roadOccupyDetection/capabilities?format=json-->true
</isSupportRoadOccupyDetection>
<isSupportMeetingRoomSignInEvent>
os fr

<!--ro, opt, bool, whether the device supports the MeetingRoomSignIn event, desc:eventType: MeetingRoomSignIn-->true
</isSupportMeetingRoomSignInEvent>
<isSupportMeetingRoomSignOutEvent>
ad on

<!--ro, opt, bool, whether the device supports the MeetingRoomSignOut event, desc:eventType: MeetingRoomSignOut-->true
</isSupportMeetingRoomSignOutEvent>
<isSupportTimeTypeSTD>
el .c

<!--ro, opt, bool, whether the device supports the time type of ISO8601, desc:if "true" is returned, it indicates that all the devices containing
ISO8601 parameters support adding the timeType=STD, such as /ISAPI/ContentMgmt/search?timeType=STD; the time will be implemented according to the standard--
ez

>true
</isSupportTimeTypeSTD>
<isSupportScanner>
en

<!--ro, opt, bool, whether the device supports scanning events and configuration, desc:if true is returned, it indicates the device supports the
/ISAPI/System/scanner/capabilities?format=json and scannerInfo event-->true
</isSupportScanner>
im

<isSupportRegionTargetNumberCounting>
ng

<!--ro, opt, bool, whether the device supports the region target counting, desc:related URI:
Aj

/ISAPI/Event/channels/<channelID>/RegionTargetNumberCounting/Capabilities?format=json-->true
</isSupportRegionTargetNumberCounting>
Co

<depthMapMaintainMode>
<!--ro, opt, object, the maintenance mode of depth image, desc:it will influence the smart functions when using depth images for tests, such as vertical
customer traffic, object accumulation detection and so on enabling the maintenance mode will change the audio and video parameters of the channels related
URI: /ISAPI/Intelligent/channels/<channelID>/DepthMapMaintainModeCfg/capabilities?format=json-->
<ChannelsList>
<!--ro, opt, array, channel list, subType:object-->
<channelID>
<!--ro, req, int, No. of channels supported by the device-->1
</channelID>
</ChannelsList>
</depthMapMaintainMode>
<isSupportExportPipCalibrationFile>
<!--ro, opt, bool, whether it supports exporting visual and thermal image fusion calibration file, desc:related URI:
/ISAPI/System/ExportPipCalibrationFile?format=json-->true
</isSupportExportPipCalibrationFile>
<isSupportCourseUploadInfo>
<!--ro, opt, bool, whether it supports notifying the course uploading completion, desc:eventType: courseUploadInfo-->true
</isSupportCourseUploadInfo>
<isSupportPresetSwitchingInformation>
<!--ro, opt, bool, whether the device supports uploading the preset switching information, desc:eventType: presetSwitchingInformation-->true
</isSupportPresetSwitchingInformation>
<isSupportCabinetChargingQuery>
<!--ro, opt, bool, whether it supports the request of searching for the charging of intelligent cabinet, desc:eventType: cabinetChargingQuery-->true
</isSupportCabinetChargingQuery>
</isSupportCabinetChargingQuery>
<isSupportSearchVoltageAndPowerConsumptionReport>
<!--ro, opt, bool, whether the device supports searching for voltage and consumption report, desc:related URI:
/ISAPI/System/SearchVoltageAndPowerConsumptionReport/capabilities?format=json-->true
</isSupportSearchVoltageAndPowerConsumptionReport>
<isSupportDeviceDrop>
<!--ro, opt, bool, whether the device supports the deviceDrop event, desc:corresponding event: deviceDrop-->true
</isSupportDeviceDrop>
<isSupportDeviceNotMoved>
<!--ro, opt, bool, whether the device supports the deviceNotMoved event, desc:corresponding event: deviceNotMoved-->true
</isSupportDeviceNotMoved>
<isSupportWalkWrongWayOnEscalator>
<!--ro, opt, bool, whether the device supports the walkWrongWayOnEscalator event, desc:corresponding event: walkWrongWayOnEscalator-->true
</isSupportWalkWrongWayOnEscalator>
<isSupportFallOnEscalator>
<!--ro, opt, bool, whether the device supports the fallOnEscalator event, desc:corresponding event: fallOnEscalator-->true

m
</isSupportFallOnEscalator>
<isSupportCarryLargeLuggageOnEscalator>

co
<!--ro, opt, bool, whether the device supports the carryLargeLuggageOnEscalator event, desc:corresponding event: carryLargeLuggageOnEscalator-->true
</isSupportCarryLargeLuggageOnEscalator>

a.
<isSupportPushStrollerOnEscalator>
<!--ro, opt, bool, whether the device supports the pushStrollerOnEscalator event, desc:corresponding event: pushStrollerOnEscalator-->true
</isSupportPushStrollerOnEscalator>

C. arc
<isSupportTeachingSpeechDetection>
<!--ro, opt, bool, whether it supports teachingSpeechDetection event, desc:corresponding event: teachingSpeechDetection-->true
</isSupportTeachingSpeechDetection>
<updatefirmwareType opt="warningScreenFirmware,warningScreenFont,warningScreenVoice">

s, em
<!--ro, opt, string, RS-485 working modes supported by the device, attr:opt{opt, string}, desc:corresponding to <type> in /ISAPI/System/updateFirmware?
type=<type>; "warningScreenFirmware", "warningScreenFont", "warningScreenVoice"; note that <isSupportUpdatefirmware> is supported when this node is

A
supported-->warningScreenFirmware

no fr
</updatefirmwareType>
<isSupportPaymentQRCodeQuery>

ri on
<!--ro, opt, bool, whether the device supports the paymentQRCodeQuery event, desc:corresponding event: paymentQRCodeQuery-->true
</isSupportPaymentQRCodeQuery>
<isSupportTopUpEvent>

Ma oc
<!--ro, opt, bool, whether the device supports the topUpEvent event, desc:corresponding event: topUpEvent-->true
</isSupportTopUpEvent>
<isSupportTopUpRequest>
up
<!--ro, opt, bool, whether the device supports the topUpRequest event, desc:corresponding event: topUpRequest-->true
</isSupportTopUpRequest>
<isSupportTopUpStatusQuery>
co gr

<!--ro, opt, bool, whether the device supports the topUpStatusQuery event, desc:corresponding event: topUpStatusQuery-->true
</isSupportTopUpStatusQuery>
es a@

<isSupportLogOffRefundRequest>
<!--ro, opt, bool, whether the device supports the logOffRefundRequest event, desc:corresponding event: logOffRefundRequest-->true
</isSupportLogOffRefundRequest>
Fr rc

<isSupportLogOffRefundStatusQuery>
<!--ro, opt, bool, whether the device supports searching for the refund status of logged-off persons, desc:corresponding event: logOffRefundStatusQuery-
->true
y ema

</isSupportLogOffRefundStatusQuery>
<isSupportAuthenticationTimeoutEvent>
<!--ro, opt, bool, whether the device supports the logOffRefundStatusQuery event, desc:corresponding event: logOffRefundStatusQuery-->true
</isSupportAuthenticationTimeoutEvent>
os fr

<isSupportCertificateCapture>
<!--ro, opt, bool, whether the device supports the certificateCapture events, desc:corresponding event: certificateCapture-->true
ad on

</isSupportCertificateCapture>
<isSupportDeviceBatchActivation>
<!--ro, opt, bool, whether the device supports batch activation, desc:POST /ISAPI/System/activate/DeviceBatchActivation?format=json-->true
el .c

</isSupportDeviceBatchActivation>
<isSupportPlaceEnvironmentMonitoringRule>
<!--ro, opt, bool, whether the device supports place environment monitoring rule parameters,
ez

desc:/ISAPI/Event/channels/<channelID>/PlaceEnvironmentMonitoringRule?format=json-->true
</isSupportPlaceEnvironmentMonitoringRule>
en

<isSupportEngineResource>
<!--ro, opt, bool, whether the device supports engine resources, desc:/ISAPI/System/EngineResource?format=json-->true
</isSupportEngineResource>
im

<isSupportPTModulePowerCfg>
<!--ro, opt, bool, whether the device supports modifying the power supply parameters of PTZ base, desc:PUT /ISAPI/System/ModifyPTModulePowerCfg?
ng

format=json POST /ISAPI/System/GetPTModulePowerCfg?format=json-->true


Aj

</isSupportPTModulePowerCfg>
<isSupportGetBoxDoorDetectionCfg>
Co

<!--ro, opt, bool, whether the device supports getting chassis door status detection configuration, desc:POST /ISAPI/System/GetBoxDoorDetectionCfg?
format=json-->true
</isSupportGetBoxDoorDetectionCfg>
<isSupportModifyBoxDoorDetectionCfg>
<!--ro, opt, bool, whether the device supports modifying chassis door status configuration, desc:PUT /ISAPI/System/ModifyBoxDoorDetectionCfg?
format=json-->true
</isSupportModifyBoxDoorDetectionCfg>
<isSupportSmartBoxStatus>
<!--ro, opt, bool, whether the device supports intelligent chassis status, desc:/ISAPI/System/SmartBoxStatus?format=json-->true
</isSupportSmartBoxStatus>
<isSupportBatteryStatusCtrl>
<!--ro, opt, bool, whether the device supports battery status event upload control parameters, desc:/ISAPI/System/BatteryStatusCtrl?format=json-->true
</isSupportBatteryStatusCtrl>
<isSupportCooler>
<!--ro, opt, bool, whether the device supports cooling management, desc:/ISAPI/System/Cooler/-->true
</isSupportCooler>
<isSupportBoxDoorDetectionCfg>
<!--ro, opt, bool, whether the device supports configuring chassis door status detection, desc:/ISAPI/System/BoxDoorDetectionCfg?format=json-->true
</isSupportBoxDoorDetectionCfg>
<isSupportBoxDoorStatus>
<!--ro, opt, bool, whether the device supports chassis door status, desc:/ISAPI/System/BoxDoorStatus?format=json-->true
</isSupportBoxDoorStatus>
<isSupportLightningProtectionStatus>
<isSupportLightningProtectionStatus>
<!--ro, opt, bool, whether the device supports lightning protection status, desc:/ISAPI/System/LightningProtectionStatus?format=json-->true
</isSupportLightningProtectionStatus>
<isSupportDeviceVisualLocalizationDetectionEvent>
<!--ro, opt, bool, whether the device supports the DeviceVisualLocalizationDetectionEvent event, desc:corresponding event:
DeviceVisualLocalizationDetectionEvent-->true
</isSupportDeviceVisualLocalizationDetectionEvent>
<isSupportDeviceVisualLocalizationAnalysisEvent>
<!--ro, opt, bool, whether the device supports the DeviceVisualLocalizationAnalysisEvent event, desc:corresponding event:
DeviceVisualLocalizationAnalysisEvent-->true
</isSupportDeviceVisualLocalizationAnalysisEvent>
<isSupportGetPowerPortWorkParamList>
<!--ro, opt, bool, whether the device supports getting the working parameter list of power supply interface, desc:POST
/ISAPI/System/GetPowerPortWorkParamList?format=json-->true
</isSupportGetPowerPortWorkParamList>
<isSupportUsersLoginNotification>
<!--ro, opt, bool, whether the device supports parameters of notifications on user login, desc:/ISAPI/System/UsersLoginNotification?format=json-->true

m
</isSupportUsersLoginNotification>

co
<isSupportLiquidLevelDetectorInfo>
<!--ro, opt, bool, whether the device supports uploading information of liquid level detector, desc:eventType: LiquidLevelDetectorInfo-->true
</isSupportLiquidLevelDetectorInfo>

a.
<isSupportWaterPressureDetectorInfo>
<!--ro, opt, bool, whether the device supports uploading information of water pressure detector, desc:eventType: WaterPressureDetectorInfo-->true

C. arc
</isSupportWaterPressureDetectorInfo>
<isSupportEncryptionFileUpgradeMgr>
<!--ro, opt, bool, whether the device supports advanced management of encrypted files, desc:GET /ISAPI/System/EncryptionFileUpgradeMgr/capabilities?
format=json-->true
</isSupportEncryptionFileUpgradeMgr>

s, em
<isSupportInformedConsentTextParam>

A
<!--ro, opt, bool, whether the device supports text parameters of consent confirmation document,

no fr
desc:/ISAPI/System/InformedConsentMgr/InformedConsentTextParam?format=json-->true
</isSupportInformedConsentTextParam>
<isSupportSendConsolePassword>

ri on
<!--ro, opt, bool, whether the device supports applying control panel password, desc:POST /ISAPI/System/SendConsolePassword?format=json-->true
</isSupportSendConsolePassword>
<isSupportAutoLaserRanging>

Ma oc
<!--ro, opt, bool, whether to support auto laser ranging parameter configuration, desc:/ISAPI/System/AutoLaserRanging?format=json-->true
</isSupportAutoLaserRanging>
up
<isSupportDelayedReboot>
<!--ro, opt, bool, whether the device supports delayed reboot after power disconnection, desc:POST /ISAPI/System/DelayedReboot?format=json-->true
</isSupportDelayedReboot>
co gr

<isSupportFalseAlarmMaterialLibMgr>
<!--ro, opt, bool, whether the device supports false alarm library management, desc:GET /ISAPI/Intelligent/falseAlarmMaterialLibMgr/capabilities?
format=json-->true
es a@

</isSupportFalseAlarmMaterialLibMgr>
<isSupportGetServerRandom>
Fr rc

<!--ro, opt, bool, whether the device supports getting random number of Chinese cryptographic server, desc:POST
s

/ISAPI/Security/ProtocolCertificate/GetServerRandom?format=json-->true
</isSupportGetServerRandom>
y ema

<isSupportSendTelnetTestCmd>
<!--ro, opt, bool, whether the device supports applying telnet testing command, desc:POST /ISAPI/System/Network/NetworkAdvancedCfg/SendTelnetTestCmd?
format=json-->true
</isSupportSendTelnetTestCmd>
os fr

<isSupportTelnetTestCmdStatus>
<!--ro, opt, bool, whether the device supports the execution status of telnet testing command, desc:GET
/ISAPI/System/Network/NetworkAdvancedCfg/TelnetTestCmdStatus?format=json-->true
ad on

</isSupportTelnetTestCmdStatus>
<isSupportImportUSBKeyAuthInfo>
<!--ro, opt, bool, whether the device supports Chinese cryptographic USBKey authentication information, desc:POST
el .c

/ISAPI/Security/ProtocolCertificate/ImportUSBKeyAuthInfo?format=json-->true
</isSupportImportUSBKeyAuthInfo>
ez

<isSupportSendSupervisionRecordCollection>
<!--ro, opt, bool, whether the device supports sending completing status of supervision recording replenishment, desc:POST
/ISAPI/Intelligent/channels/<channelID>/SendSupervisionRecordCollection?format=json-->true
en

</isSupportSendSupervisionRecordCollection>
<isSupportSearchPersonnelOperationSupervisionTask>
<!--ro, opt, bool, whether it supports searching for operation supervision tasks, desc:POST
im

/ISAPI/Intelligent/channels/<channelID>/SearchPersonnelOperationSupervisionTask?format=json-->true
ng

</isSupportSearchPersonnelOperationSupervisionTask>
Aj

<isSupportDeletePersonnelOperationSupervisionTask>
<!--ro, opt, bool, whether it supports deleting operation supervision tasks, desc:POST
Co

/ISAPI/Intelligent/channels/<channelID>/DeletePersonnelOperationSupervisionTask?format=json-->true
</isSupportDeletePersonnelOperationSupervisionTask>
<isSupportAddPersonnelOperationSupervisionTask>
<!--ro, opt, bool, whether it supports adding operation supervision tasks, desc:POST
/ISAPI/Intelligent/channels/<channelID>/AddPersonnelOperationSupervisionTask?format=json-->true
</isSupportAddPersonnelOperationSupervisionTask>
<isSupportUserLoginStatusChangeEvent>
<!--ro, opt, bool, whether the device supports the UserLoginStatusChangeEvent event, desc:eventType: UserLoginStatusChangeEvent-->true
</isSupportUserLoginStatusChangeEvent>
<isSupportObstacleAvoidance>
<!--ro, opt, bool, whether it supports obstacle avoidance management, desc:GET/PUT /ISAPI/System/ObstacleAvoidance/-->true
</isSupportObstacleAvoidance>
<isSupportManualSnapFishEyeWallPanoramaView>
<!--ro, opt, bool, whether the device supports manually capturing expanded panorama images by wall-mounted fisheye, desc:GET
/ISAPI/Streaming/channels/<channelID>/ManualSnapFishEyeWallPanoramaView?format=json-->true
</isSupportManualSnapFishEyeWallPanoramaView>
<isSupportPreviewSplitSwitchCfg>
<!--ro, opt, bool, whether the device supports custom parameters of divided window switch, desc:GET/PUT /ISAPI/System/Video/PreviewSplitSwitchCfg?
format=json-->true
</isSupportPreviewSplitSwitchCfg>
<isSupportCountingTargetParam>
<!--ro, opt, bool, whether the device supports target parameters of people counting, desc:GET/PUT
/ISAPI/System/Video/inputs/channels/<channelID>/counting/CountingTargetParam?format=json-->true
</isSupportCountingTargetParam>
</isSupportCountingTargetParam>
<isSupportDebugLogModuleType opt="playService,communicationService,attendanceService,faceService">
<!--ro, opt, bool, whether the device supports exporting debug log by module, attr:opt{req, string}-->true
</isSupportDebugLogModuleType>
<isSupportLoginPasswordCfg>
<!--ro, opt, bool, whether the device supports login password parameters, desc:GET/PUT /ISAPI/Security/users/LoginPasswordCfg?format=json-->true
</isSupportLoginPasswordCfg>
<isSupportUserDataFile>
<!--ro, opt, bool, whether the device supports importing and exporting the user data file, desc:POST /ISAPI/Security/users/UserDataFile/capabilities?
format=json-->true
</isSupportUserDataFile>
<isSupportNtripAccessCfg>
<!--ro, opt, bool, whether the device supports NTRIP protocol access parameters, desc:GET/PUT /ISAPI/System/Network/Ntrip/NtripAccessCfg?format=json--
>true
</isSupportNtripAccessCfg>
<isSupportNetworkWatchdogParams>

m
<!--ro, opt, bool, whether the device supports parameters of watchdog for network performance, desc:GET/PUT /ISAPI/System/NetworkWatchdogParams?
format=json-->true

co
</isSupportNetworkWatchdogParams>
<isSupportAudioRecordPlan>

a.
<!--ro, opt, bool, whether it supports recording schedule, desc:GET/PUT /ISAPI/System/RecordAudio/channels/<audioID>/AudioRecordPlan?format=json-->true
</isSupportAudioRecordPlan>
<isSupportStartVoiceMonitor>

C. arc
<!--ro, opt, bool, whether it supports enabling audio listening, desc:POST
/ISAPI/System/TwoWayAudio/channels/channels/<twoWayAudioChannelID>/StartVoiceMonitor?format=json-->true
</isSupportStartVoiceMonitor>
<isSupportWebPTZCfg>

s, em
<!--ro, opt, bool, whether it supports displaying the web page for PTZ configuration, desc:this node is to determine whether to display the web page for
PTZ configuration and is irrelevant to whether PTZ is supported; default process logic: when this node does not exist, whether to display the web page for

A
PTZ configuration is subject to the device type-->true

no fr
</isSupportWebPTZCfg>
<isSupportGaugeReadingEvent>

ri on
<!--ro, opt, bool, whether the device supports the GaugeReadingEvent event, desc:eventType: GaugeReadingEvent-->true
</isSupportGaugeReadingEvent>
<isSupportVNCServerCfg>

Ma oc
<!--ro, opt, bool, whether it supports VNC service configuration, desc:GET/PUT /ISAPI/System/VNCServerCfg?format=json-->true
</isSupportVNCServerCfg>
<isSupportResources>
up
<!--ro, opt, bool, whether it supports resources, desc:GET /ISAPI/System/DynamicResource/Resources?format=json, Resources-->true
</isSupportResources>
co gr

<isSupportDeviceGroupMgr>
<!--ro, opt, bool, whether it supports device application resources group management, desc:GET /ISAPI/System/DeviceGroupMgr/capabilities?format=json--
>true
es a@

</isSupportDeviceGroupMgr>
<isSupportAsyncResetSubDevicePassword>
<!--ro, opt, bool, whether the device supports resetting the password of sub-device asynchronously,
Fr rc

desc:/ISAPI/Security/resetPassword/AsyncResetSubDevicePassword?format=json-->true
</isSupportAsyncResetSubDevicePassword>
<isSupportAsyncResetSubDevicePasswordStatusList>
y ema

<!--ro, opt, bool, whether the device supports the status list of asynchronously resetting sub-devices' passwords,
desc:/ISAPI/Security/resetPassword/AsyncResetSubDevicePasswordStatusList?format=json-->true
</isSupportAsyncResetSubDevicePasswordStatusList>
<isSupportEDRAccessList>
os fr

<!--ro, opt, bool, whether the device supports accessing address parameters of EDR service, desc:GET/PUT /ISAPI/System/Network/EDRAccessList?
format=json-->true
ad on

</isSupportEDRAccessList>
<isSupportBatteryCarInfoEvent>
<!--ro, opt, bool, whether to support the BatteryCarInfoEvent event, desc:eventType: BatteryCarInfoEvent-->true
el .c

</isSupportBatteryCarInfoEvent>
<isSupportChildmanage>
<!--ro, opt, bool, whether the device supports gateway sub-device topology management, desc:GET /ISAPI/IoTGateway/Childmanage/capabilities?format=json--
ez

>true
</isSupportChildmanage>
en

<isSupportSearchResources>
<!--ro, opt, bool, whether the device supports searching the resource list, desc:POST /ISAPI/System/DynamicResource/SearchResources?format=json-->true
</isSupportSearchResources>
im

<isSupportResetPasswordPhoneNo>
<!--ro, opt, bool, whether the device supports the phone No. for resetting password, desc:GET/PUT /ISAPI/Security/resetPassword/ResetPasswordPhoneNo?
ng

format=json-->true
Aj

</isSupportResetPasswordPhoneNo>
Co

<isSupportGetPhoneNoQRCode>
<!--ro, opt, bool, whether the device supports getting the QR code to be scanned by phone for resetting password, desc:GET
/ISAPI/Security/resetPassword/GetPhoneNoQRCode?format=json-->true
</isSupportGetPhoneNoQRCode>
<isSupportResetPasswordByPhoneNoSecurityCode>
<!--ro, opt, bool, whether it supports resetting device password with phone number verification, desc:PUT
/ISAPI/Security/resetPassword/ResetPasswordByPhoneNoSecurityCode?format=json-->true
</isSupportResetPasswordByPhoneNoSecurityCode>
<isSupportGaugeReadingOverlapParams>
<!--ro, opt, bool, whether the device supports water level gauge detection information overlay parameters, desc:GET/PUT
/ISAPI/Event/gaugeReading/channels/<channelID>/GaugeReadingOverlapParams?format=json-->true
</isSupportGaugeReadingOverlapParams>
<isSupportGaugeReadingRainfallEvent>
<!--ro, opt, bool, whether the device supports the GaugeReadingRainfallEvent event, desc:eventType: GaugeReadingRainfallEvent-->true
</isSupportGaugeReadingRainfallEvent>
<isSupportSearchTrafficLightMalfunctionResult>
<!--ro, opt, bool, whether the device supports searching for traffic light fault detection result, desc:POST
/ISAPI/Event/TrafficLightMalfunctionDetection/SearchTrafficLightMalfunctionResult?format=json-->true
</isSupportSearchTrafficLightMalfunctionResult>
<isSupportCheckPhoneNoSecurityCode>
<!--ro, opt, bool, whether the device supports phone security code verification, desc:PUT /ISAPI/Security/resetPassword/CheckPhoneNoSecurityCode?
format=json-->true
</isSupportCheckPhoneNoSecurityCode>
<isSupportUserValidExpired>
<isSupportUserValidExpired>
<!--ro, opt, bool, whether the device supports the UserValidExpired event, desc:eventType: UserValidExpired-->true
</isSupportUserValidExpired>
<isSupportSearchWaterLevelData>
<!--ro, opt, bool, whether the device supports searching for water level detection data, desc:POST
/ISAPI/Event/waterQualityDetection/SearchWaterLevelData?format=json-->true
</isSupportSearchWaterLevelData>
<isSupportSearchRecommendPerspective>
<!--ro, opt, bool, whether the device supports searching for recommended FoV, desc:POST
/ISAPI/Streaming/channels/channels/<channelID>/SearchRecommendPerspective?format=json-->true
</isSupportSearchRecommendPerspective>
<isSupportGetLegendaryPerspectiveInfo>
<!--ro, opt, bool, whether the device supports getting the information of camera FoV, desc:GET
/ISAPI/Streaming/channels/channels/<channelID>/GetLegendaryPerspectiveInfo?format=json-->true
</isSupportGetLegendaryPerspectiveInfo>
<configurationDataType opt="OSD,MODE,IMAGE,IOOUT,OTHERS">
<!--ro, opt, string, "OSD"-import video and image OSD settings, "MODE"-import application mode, "IMAGE"-import image parameters, "IOONT"-import

m
supplement Light Parameters, "OTHERS", attr:opt{req, string}-->test

co
</configurationDataType>
<isSupportRestoreVideoAdjustmentParam>
<!--ro, opt, bool, whether the device supports restoring video image setting parameters, desc:GET/PUT

a.
/ISAPI/System/Video/channels/<channelID>/RestoreVideoAdjustmentParam?format=json-->true
</isSupportRestoreVideoAdjustmentParam>

C. arc
<isSupportWeatherStationInfo>
<!--ro, opt, bool, whether the device supports weather station information, desc:GET/PUT /ISAPI/Traffic/channels/<channelID>/WeatherStationInfo?
format=json-->true
</isSupportWeatherStationInfo>

s, em
<isSupportRadarPerimeterAlgCap>
<!--ro, opt, bool, whether the device supports the capability of radar perimeter algorithm parameters, desc:GET

A
/ISAPI/Smart/RadarPerimeterAlg/capabilities?format=json-->true

no fr
</isSupportRadarPerimeterAlgCap>
<isSupportBodyCameraOneKeyAlarmEvent>
<!--ro, opt, bool, whether the device supports the BodyCameraOneKeyAlarmEvent event, desc:eventType: BodyCameraOneKeyAlarmEvent; this node is not

ri on
returned if not supported-->true
</isSupportBodyCameraOneKeyAlarmEvent>

Ma oc
<isSupportGetOnlineTrafficLight>
<!--ro, opt, bool, whether the device supports getting online traffic light information, desc:GET
/ISAPI/Event/TrafficLightMalfunctionDetection/GetOnlineTrafficLight?format=json-->true
up
</isSupportGetOnlineTrafficLight>
<isSupportTrafficLightMalfunctionDefaultParams>
<!--ro, opt, bool, whether the device supports default parameters of traffic light fault detection rules, desc:GET/PUT
co gr

/ISAPI/Event/TrafficLightMalfunctionDetection/TrafficLightMalfunctionDefaultParams?format=json-->true
</isSupportTrafficLightMalfunctionDefaultParams>
<isSupportFallenObjectsOnTracksDetection>
es a@

<!--ro, opt, bool, whether the device supports detection of fallen objects on tracks, desc:GET
/ISAPI/Intelligent/channels/<channelID>/FallenObjectsOnTracksDetection/capabilities?format=json-->true
Fr rc

</isSupportFallenObjectsOnTracksDetection>
s

<isSupportMonitorAuthorization>
<!--ro, opt, bool, whether the device supports device service monitoring authorization information, desc:GET
y ema

/ISAPI/Security/DeviceServiceMonitor/MonitorAuthorization?format=json-->true
</isSupportMonitorAuthorization>
<isSupportBodyCameraTakeEvent>
<!--ro, opt, bool, whether the device supports the BodyCameraTakeEvent event, desc:eventType: BodyCameraTakeEvent; this node is not returned if not
os fr

supported-->true
</isSupportBodyCameraTakeEvent>
<isSupportCollaborationModeCfg>
ad on

<!--ro, opt, bool, whether the device supports configuring multi-lens coordination mode, desc:GET/PUT /ISAPI/Intelligent/CollaborationModeCfg?
format=json-->true
el .c

</isSupportCollaborationModeCfg>
<isSupportAudioChannelVCAResource>
<!--ro, opt, bool, whether the device supports switching intelligent resources running on audio channels, desc:GET/PUT
ez

/ISAPI/System/VCAResource/channels/<audioID>/AudioChannelVCAResource?format=json-->true
</isSupportAudioChannelVCAResource>
<isSupportGasTankMonitoringEvent>
en

<!--ro, opt, bool, whether the device supports the GasTankMonitoringEvent event, desc:eventType: GasTankMonitoringEvent-->true
</isSupportGasTankMonitoringEvent>
im

<isSupportChannelClearEvent>
<!--ro, opt, bool, whether the device supports the ChannelClearEvent event, desc:eventType: ChannelClearEvent-->true
ng

</isSupportChannelClearEvent>
Aj

<isSupportBackDuty>
<!--ro, opt, bool, whether the device supports the backDuty event, desc:eventType: backDuty-->true
Co

</isSupportBackDuty>
<isSupportSleepDuty>
<!--ro, opt, bool, whether the device supports the sleepDuty event, desc:eventType: sleepDuty-->true
</isSupportSleepDuty>
<isSupportSearchChildDevResourcesStatus>
<!--ro, opt, bool, whether the device supports searching for sub-device resource status, desc:POST
/ISAPI/System/DynamicResource/SearchChildDevResourcesStatus?format=json-->true
</isSupportSearchChildDevResourcesStatus>
<isSupportDeleteResources>
<!--ro, opt, bool, whether the device supports deleting resources, desc:PUT /ISAPI/System/DynamicResource/DeleteResources?format=json-->true
</isSupportDeleteResources>
<isSupportMenuFunctionList>
<!--ro, opt, bool, whether the device supports the menu list, desc:GET /ISAPI/Thermal/MenuFunctionList?format=json-->true
</isSupportMenuFunctionList>
<isSupportKeyFunctionList>
<!--ro, opt, bool, whether the device supports the button list, desc:GET /ISAPI/Thermal/KeyFunctionList?format=json-->true
</isSupportKeyFunctionList>
<isSupportKeyValueList>
<!--ro, opt, bool, whether the device supports button key list, desc:GET /ISAPI/Thermal/KeyValueList?format=json-->true
</isSupportKeyValueList>
<isSupportGetPseudoColorBackgroundPic>
<!--ro, opt, bool, whether the device supports 3-channel palette background picture, desc:GET
/ISAPI/Streaming/channels/<channelID>/GetPseudoColorBackgroundPic?format=json-->true
</isSupportGetPseudoColorBackgroundPic>
<isSupportElevatorRunningDetection>
<!--ro, opt, bool, whether the device supports elevator running status detection, desc:GET
/ISAPI/Intelligent/channels/<channelID>/ElevatorRunningDetection/capabilities?format=json-->true
</isSupportElevatorRunningDetection>
<isSupportSearchPersonQueueRealTimeResult>
<!--ro, opt, bool, whether the device supports searching for history records of person waiting detection event, desc:POST
/ISAPI/Intelligent/personQueueDetection/SearchPersonQueueRealTimeResult?format=json-->true
</isSupportSearchPersonQueueRealTimeResult>
<isSupportSearchLeavePositionEventResult>
<!--ro, opt, bool, whether the device supports searching for history records of absence detection event, desc:POST
/ISAPI/Intelligent/HehaviorAnalysis/SearchLeavePositionEventResult?format=json-->true
</isSupportSearchLeavePositionEventResult>
<isSupportImportElectronicBadgeBackgroundImage>
<!--ro, opt, bool, whether the device supports importing the background picture of nameplate, desc:POST
/ISAPI/Traffic/ImportElectronicBadgeBackgroundImage?format=json-->true

m
</isSupportImportElectronicBadgeBackgroundImage>

co
<isSupportVoiceMonitoringEvent>
<!--ro, opt, bool, whether the device supports uploading the VoiceMonitoringEvent event, desc:eventType: VoiceMonitoringEvent-->true
</isSupportVoiceMonitoringEvent>

a.
<isSupportPseudoColorBackgroundParam>
<!--ro, opt, bool, whether the device supports 3-channel palette background parameters, desc:GET/PUT
/ISAPI/Streaming/channels/<channelID>/PseudoColorBackgroundParam?format=json-->true

C. arc
</isSupportPseudoColorBackgroundParam>
<isSupportGotoPerimeterShieldMaskScene>
<!--ro, opt, bool, whether the device supports jumping to shielded scenes of specified radar perimeter, desc:POST
/ISAPI/Smart/RadarPerimeterAlg/GotoPerimeterShieldMaskScene?format=json-->true

s, em
</isSupportGotoPerimeterShieldMaskScene>
<isSupportSearchPersonQueueTimingStatistics>

A
<!--ro, opt, bool, whether the device supports the SearchPersonQueueTimingStatistics event, desc:POST

no fr
/ISAPI/Intelligent/personQueueDetection/SearchPersonQueueTimingStatistics?format=json-->true
</isSupportSearchPersonQueueTimingStatistics>

ri on
<isSupportLocalUserChange>
<!--ro, opt, bool, whether the device supports the LocalUserChange event, desc:eventType: LocalUserChange-->true
</isSupportLocalUserChange>

Ma oc
<isSupportSendClientTask>
<!--ro, opt, bool, whether the device supports applying tasks configured on the client, desc:POST /ISAPI/System/RailwayPatrol/SendClientTask?
format=json-->true
up
</isSupportSendClientTask>
<isSupportGetCurrentClientTaskStatus>
co gr

<!--ro, opt, bool, whether the device supports getting the current execution progress of the client task, desc:GET
/ISAPI/System/RailwayPatrol/GetCurrentClientTaskStatus?format=json-->true
</isSupportGetCurrentClientTaskStatus>
es a@

<isSupportTestEDRServerConnect>
<!--ro, opt, bool, whether the device supports testing the connection status of the EDR platform, desc:POST /ISAPI/System/Network/TestEDRServerConnect?
format=json-->true
Fr rc

</isSupportTestEDRServerConnect>
<isSupportRealTimeStreamInfo>
y ema

<!--ro, opt, bool, whether the device supports getting the real-time stream information, desc:GET /ISAPI/Streaming/RealTimeStreamInfo?format=json-->true
</isSupportRealTimeStreamInfo>
<isSupportIrcutFilterStatusChange>
<!--ro, opt, bool, whether the device supports the IrcutFilterStatusChange event, desc:eventType: IrcutFilterStatusChange-->true
os fr

</isSupportIrcutFilterStatusChange>
<isSupportSendRoadMaintPictureAnalysisTask>
<!--ro, opt, bool, whether the device supports applying tasks of road maintenance picture analysis, desc:POST
ad on

/ISAPI/Intelligent/SendRoadMaintPictureAnalysisTask?format=json-->true
</isSupportSendRoadMaintPictureAnalysisTask>
<isSupportFDRemoveDuplicateParams>
el .c

<!--ro, opt, bool, whether the device supports deduplication parameters of custom face picture library, desc:GET/PUT
/ISAPI/System/Video/inputs/counting/FDRemoveDuplicateParams?format=json-->true
ez

</isSupportFDRemoveDuplicateParams>
<isSupportRadarMixedTargetSensitivityParams>
<!--ro, opt, bool, whether the device supports sensitivity parameters of multi-target-type detection via radar, desc:GET/PUT
en

/ISAPI/Smart/RadarMixedTargetAlg/RadarMixedTargetSensitivityParams?format=json-->true
</isSupportRadarMixedTargetSensitivityParams>
<isSupportMixedTargetRadarSensitivityParams>
im

<!--ro, opt, bool, whether the device supports sensitivity parameters of multi-target-type detection via video, desc:GET/PUT
/ISAPI/Intelligent/channels/<channelID>/MixedTargetRadarSensitivityParams?format=json-->true
ng

</isSupportMixedTargetRadarSensitivityParams>
Aj

<isSupportMixedTargetRadarDebugParams>
Co

<!--ro, opt, bool, whether the device supports algorithm debugging parameters of multi-target-type detection via video, desc:GET/PUT
/ISAPI/Intelligent/channels/<channelID>/MixedTargetRadarDebugParams?format=json-->true
</isSupportMixedTargetRadarDebugParams>
<isSupportHttpPreview>
<!--ro, opt, bool, whether the device supports HTTP live view,
desc:related URI: GET /ISAPI/Streaming/channels/<trackStreamID>/httppreview;
there are 2 steps as follows:
1. check if this node is returned by device and if the returned value is true. If yes, the HTTP live view function is supported by device.
2. if this node is not returned by device, you should go through the stream ID in the API (GET /ISAPI/Streaming/channels/<trackStreamID>/httppreview) of all
channels. If notSupport is returned for all channels, HTTP live view is not supported by device; if at least the success code is returned for at least one
channel, HTTP live view is supported by device.
Note: whether the stream ID (trackStreamID) is supported is determined by the response parameters StreamingChannelList, StreamingChannel, and id from GET
/ISAPI/Streaming/channels-->true
</isSupportHttpPreview>
<isSupportGetRecordThumbnail>
<!--ro, opt, bool, whether the device supports getting the video file thumbnail, desc:POST /ISAPI/ContentMgmt/search/GetRecordThumbnail?format=json--
>true
</isSupportGetRecordThumbnail>
<isSupportProxyAIOP>
<!--ro, opt, bool, whether the device supports proxy access of AIOP (AIOP devices connected with network cameras via NVR transparent transmission),
desc:when this node is supported, full AIOP functions (device AIOP capability, model package management, task rule management, detection data, etc.) can be
accessed via proxy transmission of ISAPI sub-device-->true
</isSupportProxyAIOP>
<isSupportStaticObjectPositionOffsetComparison>
<isSupportStaticObjectPositionOffsetComparison>
<!--ro, opt, bool, whether the device supports position deviation comparison of static objects, desc:GET
/ISAPI/Intelligent/channels/<channelID>/StaticObjectPositionOffsetComparison/capabilities?format=json-->true
</isSupportStaticObjectPositionOffsetComparison>
<isSupportClearFDRemoveDuplicateFDLib>
<!--ro, opt, bool, whether the device supports manually clearing the custom face picture library on device, desc:POST
/ISAPI/System/Video/inputs/counting/ClearFDRemoveDuplicateFDLib?format=json-->true
</isSupportClearFDRemoveDuplicateFDLib>
<isSupportDevPowerStatusReportCtrl>
<!--ro, opt, bool, whether the device supports control parameters of device battery status upload, desc:GET/PUT /ISAPI/System/DevPowerStatusReportCtrl?
format=json-->true
</isSupportDevPowerStatusReportCtrl>
<isSupportIndicatorLight>
<!--ro, opt, bool, whether the device supports indicator light configuration, desc:GET /ISAPI/System/IndicatorLight/capabilities?format=json-->true
</isSupportIndicatorLight>
<isSupportEnvironmentTemperatureMonitorEvent>

m
<!--ro, opt, bool, whether the device supports the EnvironmentTemperatureMonitorEvent event, desc:eventType: EnvironmentTemperatureMonitorEvent-->true
</isSupportEnvironmentTemperatureMonitorEvent>

co
<isSupportPhysicalTraining>
<!--ro, opt, bool, whether the device supports physical training, desc:GET /ISAPI/Intelligent/channels/<channelID>/PhysicalTraining/capabilities?
format=json-->true

a.
</isSupportPhysicalTraining>
<isSupportPullUp>

C. arc
<!--ro, opt, bool, whether the device supports the PullUp event, desc:eventType: PullUp-->true
</isSupportPullUp>
<isSupportSitUpWithHandsBehindHead>
<!--ro, opt, bool, whether the device supports the SitUpWithHandsBehindHead event, desc:eventType: SitUpWithHandsBehindHead-->true

s, em
</isSupportSitUpWithHandsBehindHead>
<isSupportSitUpWithArmsOnChest>

A
<!--ro, opt, bool, whether the device supports the SitUpWithArmsOnChest event, desc:eventType: SitUpWithArmsOnChest-->true

no fr
</isSupportSitUpWithArmsOnChest>
<isSupportPushUp>
<!--ro, opt, bool, whether the device supports the PushUp event, desc:eventType: PushUp-->true

ri on
</isSupportPushUp>
<isSupportPullUpHold>

Ma oc
<!--ro, opt, bool, whether the device supports the PullUpHold event, desc:eventType: PullUpHold-->true
</isSupportPullUpHold>
<isSupportVerificationPlatformParams>
up
<!--ro, opt, bool, whether the device supports accessing parameters for the verification and recording platform, desc:GET/PUT
/ISAPI/System/Network/VerificationPlatformAccess/VerificationPlatformParams?format=json-->true
</isSupportVerificationPlatformParams>
co gr

<isSupportVehicleMaintenanceDetection>
<!--ro, opt, bool, whether the device supports vehicle maintenance detection, desc:GET /ISAPI/Intelligent/VehicleMaintenanceDetection/capabilities?
es a@

format=json; detects the status of vehicles in the maintenance shop and triggers the alarm when the vehicle is lifted (when detecting chassis) or lowered,
or the hood is opened-->true
</isSupportVehicleMaintenanceDetection>
Fr rc

<isSupportPhysicalTrainingStatus>
s

<!--ro, opt, bool, whether the device supports the PhysicalTrainingStatus event, desc:eventType: PhysicalTrainingStatus-->true
</isSupportPhysicalTrainingStatus>
y ema

<isSupportDeviceAbnormalDebug>
<!--ro, opt, bool, whether the device supports device operation exception debugging, desc:GET /ISAPI/System/DeviceAbnormalDebug/capabilities?
format=json; during device operation exception, the device operation debugging data (debugging log, dump file, etc.) will be collected by technical support-
->true
os fr

</isSupportDeviceAbnormalDebug>
<isSupportSetWaterLevelResetOfWaterTank>
<!--ro, opt, bool, whether the device supports manually filling up the water tank and uploading the filled tank information for calculating remaining
ad on

water via lens wiper usage, desc:PUT /ISAPI/System/Hardware/SetWaterLevelResetOfWaterTank?format=json-->true


</isSupportSetWaterLevelResetOfWaterTank>
el .c

<isSupportGetRemoteAlbumPicture>
<!--ro, opt, bool, whether the device supports getting pictures from the remote album, desc:POST /ISAPI/ContentMgmt/GetRemoteAlbumPicture?format=json--
>true
ez

</isSupportGetRemoteAlbumPicture>
<isSupportUltravioletImagingFusionParams>
<!--ro, opt, bool, whether the device supports UV imaging fusion parameters, desc:GET/PUT
en

/ISAPI/System/Video/channels/<channelID>/UltravioletImagingFusionParams?format=json-->true
</isSupportUltravioletImagingFusionParams>
im

<isSupportAudioAnalysisCfg>
<!--ro, opt, bool, whether it supports audio analysis parameters, desc:GET/PUT
ng

/ISAPI/Intelligent/SensitiveInfoAnalysis/AudioIn/<AudioInID>/AudioAnalysisCfg?format=json-->true
Aj

</isSupportAudioAnalysisCfg>
<isSupportRuningLogPlan>
Co

<!--ro, opt, bool, whether the device supports device operation log schedule, desc:GET/PUT /ISAPI/ContentMgmt/RuningLogPlan?format=json-->true
</isSupportRuningLogPlan>
<isSupportSearchRuningLogData>
<!--ro, opt, bool, whether the device supports searching for device operation log data, desc:POST /ISAPI/ContentMgmt/SearchRuningLogData?format=json--
>true
</isSupportSearchRuningLogData>
<isSupportExportRuningLogData>
<!--ro, opt, bool, whether the device supports exporting device operation log data, desc:POST /ISAPI/ContentMgmt/ExportRuningLogData?format=json-->true
</isSupportExportRuningLogData>
<isSupportCertificateCaptureEvent>
<!--ro, opt, bool, whether the device supports the CertificateCaptureEvent event, desc:corresponding event: CertificateCaptureEvent-->true
</isSupportCertificateCaptureEvent>
<isSupportUpgradeKeywordModel>
<!--ro, opt, bool, whether the device supports upgrading the sensitive information keyword model, desc:PUT
/ISAPI/Intelligent/SensitiveInfoAnalysis/UpgradeKeywordModel?format=json-->true
</isSupportUpgradeKeywordModel>
<isSupportGetKeywordModelStatus>
<!--ro, opt, bool, whether the device supports getting algorithm running status of the sensitive information keyword model, desc:GET
/ISAPI/Intelligent/SensitiveInfoAnalysis/GetKeywordModelStatus?format=json-->true
</isSupportGetKeywordModelStatus>
<isSupportCloseLensPrivacyCover>
<!--ro, opt, bool, whether the device supports manually closing the lens privacy cap, desc:PUT /ISAPI/System/channels/<channelID>/CloseLensPrivacyCover?
format=json-->true
</isSupportCloseLensPrivacyCover>
<isSupportOpenLensPrivacyCover>
<!--ro, opt, bool, whether the device supports manually opening the lens privacy cap, desc:PUT /ISAPI/System/channels/<channelID>/OpenLensPrivacyCover?
format=json-->true
</isSupportOpenLensPrivacyCover>
<isSupportLensPrivacyCoverModeParams>
<!--ro, opt, bool, whether the device supports working mode parameters of the lens privacy cap, desc:GET/PUT
/ISAPI/System/channels/<channelID>/LensPrivacyCoverModeParams?format=json-->true
</isSupportLensPrivacyCoverModeParams>
<isSupportOTAPService>
<!--ro, opt, bool, whether the device supports OTAP service configuration, desc:/ISAPI/System/Network/OTAPService/capabilities?format=json-->true
</isSupportOTAPService>
<isSupportGetPlaybackStreamInfo>
<!--ro, opt, bool, whether the device supports getting video playback stream information, desc:GET /ISAPI/Streaming/GetPlaybackStreamInfo?format=json--
>true
</isSupportGetPlaybackStreamInfo>

m
<isSupportNBIoTPlateformAccessStatus>

co
<!--ro, opt, bool, whether the device supports the NB-IoT platform access status, desc:GET /ISAPI/System/Network/NBIoTPlateformAccessStatus?format=json-
->true
</isSupportNBIoTPlateformAccessStatus>

a.
<isSupportScannedListEvent>
<!--ro, opt, bool, whether the device supports Bluetooth scanning list event, desc:eventType: ScannedListEvent-->true
</isSupportScannedListEvent>

C. arc
<isSupportDownloadAudioRecordByTime>
<!--ro, opt, bool, whether the device supports downloading audio files by time, desc:POST /ISAPI/System/RecordAudio/DownloadAudioRecordByTime?
format=json-->true
</isSupportDownloadAudioRecordByTime>

s, em
<isSupportBackUpConfigurationFile>

A
<!--ro, opt, bool, whether the device supports local backup of the configuration file, desc:PUT /ISAPI/System/BackUpConfigurationFile?format=json-->true

no fr
</isSupportBackUpConfigurationFile>
<isSupportRestoreConfigurationFile>
<!--ro, opt, bool, whether the device supports restoring the device local configuration file, desc:PUT /ISAPI/System/RestoreConfigurationFile?

ri on
format=json-->true
</isSupportRestoreConfigurationFile>
<isSupportGetCfgFileBackUpInfo>

Ma oc
<!--ro, opt, bool, whether the device supports getting the local configuration file backup information, desc:GET /ISAPI/System/GetCfgFileBackUpInfo?
format=json-->true
up
</isSupportGetCfgFileBackUpInfo>
<isSupportSearchVideoCodeMealParams>
<!--ro, opt, bool, whether the device supports searching for video encoding plan parameters, desc:POST
co gr

/ISAPI/Streaming/channels/<channelID>/SearchVideoCodeMealParams?format=json-->true
</isSupportSearchVideoCodeMealParams>
<isSupportVideoCodeMealParams>
es a@

<!--ro, opt, bool, whether the device supports video encoding plan parameters, desc:GET/PUT /ISAPI/Streaming/channels/<channelID>/VideoCodeMealParams?
format=json-->true
</isSupportVideoCodeMealParams>
Fr rc

<isSupportFlameCombustionStatusRuleParams>
<!--ro, opt, bool, whether the device supports flame burning status detection rule parameters, desc:GET/PUT
y ema

/ISAPI/Intelligent/channels/<channelID>/FlameCombustionStatusRuleParams?format=json-->true
</isSupportFlameCombustionStatusRuleParams>
<isSupportFlameCombustionStatusOverlapParams>
<!--ro, opt, bool, whether the device supports flame burning status detection information overlay parameters, desc:GET/PUT
os fr

/ISAPI/Intelligent/channels/<channelID>/FlameCombustionStatusOverlapParams?format=json-->true
</isSupportFlameCombustionStatusOverlapParams>
<isSupportAcousticLeakDetection>
ad on

<!--ro, opt, bool, whether the device supports acoustic leak detection capability, desc:related URL: /ISAPI/System/AcousticLeakDetection/capabilities?
format=json-->true
</isSupportAcousticLeakDetection>
el .c

<isSupportFlameCombustionStatusSceneList>
<!--ro, opt, bool, whether the device supports flame burning status detection scene list, desc:GET
ez

/ISAPI/Intelligent/channels/<channelID>/FlameCombustionStatusSceneList?format=json-->true
</isSupportFlameCombustionStatusSceneList>
<isSupportGasLeakageDetection>
en

<!--ro, opt, bool, whether the device supports gas leak event, desc:eventType: GasLeakageDetection-->true
</isSupportGasLeakageDetection>
<isSupportDischargeDetection>
im

<!--ro, opt, bool, whether the device supports discharging event, desc:eventType: DischargeDetection-->true
ng

</isSupportDischargeDetection>
Aj

<isSupportSearchBaseMapIDList>
<!--ro, opt, bool, whether the device supports searching for base map ID list, desc:POST /ISAPI/ContentMgmt/SearchBaseMapIDList?format=json-->true
Co

</isSupportSearchBaseMapIDList>
<isSupportRestoreDefaultParam>
<!--ro, opt, bool, whether the device supports restoring default parameters, desc:PUT /ISAPI/Streaming/RestoreDefaultParam?format=json-->true
</isSupportRestoreDefaultParam>
<isSupportSearchEventTargetInfo>
<!--ro, opt, bool, whether the device supports searching for event detection target information in FoV, desc:GET
/ISAPI/System/Video/inputs/channels/<channelID>/SearchEventTargetInfo?format=json-->true
</isSupportSearchEventTargetInfo>
<isSupportElevatorRunningDetectionEvent>
<!--ro, opt, bool, whether the device supports elevator running event, desc:eventType: ElevatorRunningDetectionEvent-->true
</isSupportElevatorRunningDetectionEvent>
<isSupportElevatorOperationStatistics>
<!--ro, opt, bool, whether the device supports elevator running statistics event, desc:eventType: ElevatorOperationStatistics-->true
</isSupportElevatorOperationStatistics>
<isSupportStandingLongJump>
<!--ro, opt, bool, whether the device supports standing long jump event, desc:eventType: StandingLongJump-->true
</isSupportStandingLongJump>
<isSupportJumpRope>
<!--ro, opt, bool, whether the device supports jumping rope event, desc:eventType: JumpRope-->true
</isSupportJumpRope>
<isSupportUserAvailablePwQuery>
<!--ro, opt, bool, whether the device supports person query through password, desc:eventType:UserAvailablePwQuery-->true
</isSupportUserAvailablePwQuery>
<isSupportAddHistoryEventSubscribeCfg>
<isSupportAddHistoryEventSubscribeCfg>
<!--ro, opt, bool, whether the device supports adding history event subscription, desc:POST /ISAPI/Event/notification/AddHistoryEventSubscribeCfg?
format=json-->true
</isSupportAddHistoryEventSubscribeCfg>
<isSupportHistoryEventSubscribeUploadCtrl>
<!--ro, opt, bool, whether the device supports history event subscription uploading control, desc:PUT
/ISAPI/Event/notification/HistoryEventSubscribeUploadCtrl?format=json-->true
</isSupportHistoryEventSubscribeUploadCtrl>
<isSupportHLSStreamCfg>
<!--ro, opt, bool, whether the device supports HLS streaming address parameters, desc:GET/PUT /ISAPI/Streaming/channels/<channelID>/HLSStreamCfg?
format=json-->true
</isSupportHLSStreamCfg>
<isSupportGetKeywordModelVersionInfo>
<!--ro, opt, bool, whether the device supports getting sensitive information keyword model version information, desc:GET
/ISAPI/Intelligent/SensitiveInfoAnalysis/GetKeywordModelVersionInfo?format=json-->true
</isSupportGetKeywordModelVersionInfo>

m
<isSupportManualTriggerRemoteAlbumSnapshot>
<!--ro, opt, bool, whether the device supports manually triggering remote album capture, desc:PUT /ISAPI/ContentMgmt/ManualTriggerRemoteAlbumSnapshot?

co
format=json-->true
</isSupportManualTriggerRemoteAlbumSnapshot>

a.
<isSupportRadarVideoAssistedFocusParams>
<!--ro, opt, bool, whether the device supports radar-assisted focusing parameters, desc:GET/PUT
/ISAPI/Intelligent/radarVideoDetection/channels/<channelID>/RadarVideoAssistedFocusParams?format=json-->true

C. arc
</isSupportRadarVideoAssistedFocusParams>
<isSupportCollectionResultUpload>
<!--ro, opt, bool, whether the device supports the uploading collected result event, desc:eventType: CollectionResultUpload-->true
</isSupportCollectionResultUpload>

s, em
<isSupportDeveloperMode>
<!--ro, opt, bool, whether the device supports developer mode, desc:GET/PUT /ISAPI/System/DeveloperMode?format=json-->true

A
</isSupportDeveloperMode>

no fr
<isSupportGetDetailsFunction>
<!--ro, opt, bool, whether the device supports getting detailed functions supported in T1 test, desc:GET /ISAPI/System/T1Test/DetailsFunction?

ri on
format=json-->true
</isSupportGetDetailsFunction>
<isSupportSearchDeviceIANAList>

Ma oc
<!--ro, opt, bool, whether the device supports searching for supported IANA list, desc:POST /ISAPI/System/time/SearchDeviceIANAList?format=json-->true
</isSupportSearchDeviceIANAList>
<isSupportModifySpecificROIStreamJointParams>
up
<!--ro, opt, bool, whether the device supports setting ROI stream jointing parameters, desc:PUT
/ISAPI/Streaming/channels/<channelID>/ModifySpecificROIStreamJointParams?format=json-->true
</isSupportModifySpecificROIStreamJointParams>
co gr

<isSupportDeviceTamperParams>
<!--ro, opt, bool, whether the device supports tampering parameters, desc:GET/PUT /ISAPI/System/DeviceTamperParams?format=json-->true
es a@

</isSupportDeviceTamperParams>
<isSupportDeviceTamperEvent>
<!--ro, opt, bool, whether the device supports tampering event, desc:eventType: DeviceTamperEvent-->true
Fr rc

</isSupportDeviceTamperEvent>
<isSupportRoadVariableLaneCtrlParams>
<!--ro, opt, bool, whether the device supports dynamic management parameters of changeable lane, desc:GET/PUT
y ema

/ISAPI/Traffic/RoadVariableLaneCtrl/channels/<channelID>/RoadVariableLaneCtrlParams?format=json-->true
</isSupportRoadVariableLaneCtrlParams>
<isSupportImportModelFile>
<!--ro, opt, bool, whether the device supports importing the water quality detection model file, desc:POST
os fr

/ISAPI/Event/waterQualityDetection/ImportModelFile?format=json-->true
</isSupportImportModelFile>
ad on

<isSupportSearchImportStatus>
<!--ro, opt, bool, whether the device supports getting water quality detection model file importing progress, desc:GET
/ISAPI/Event/waterQualityDetection/SearchImportStatus?format=json-->true
el .c

</isSupportSearchImportStatus>
<isSupportSafetyWorkwearDetectionOverlapParams>
<!--ro, opt, bool, whether the device supports parameters of wearing safety work clothes detection information overlay, desc:GET/PUT
ez

/ISAPI/Intelligent/channels/<channelID>/SafetyWorkwearDetectionOverlapParams?format=json-->true
</isSupportSafetyWorkwearDetectionOverlapParams>
en

<isSupportSafetyWorkwearDetectionRuleParams>
<!--ro, opt, bool, whether the device supports detection rule parameters of wearing safety work clothes, desc:GET/PUT
/ISAPI/Intelligent/channels/<channelID>/SafetyWorkwearDetectionRuleParams?format=json-->true
im

</isSupportSafetyWorkwearDetectionRuleParams>
<isSupportUpdateFirmwareMode>
ng

<!--ro, opt, bool, whether the device supports the upgrade mode, desc:GET/PUT /ISAPI/System/UpdateFirmwareMode?format=json-->true
Aj

</isSupportUpdateFirmwareMode>
<isSupportIndoorPasswayRecovery>
Co

<!--ro, opt, bool, whether the device supports indoor passway block alarm restoring event, desc:eventType: IndoorPasswayRecovery#-->true
</isSupportIndoorPasswayRecovery>
<isSupportBatteryCarRecovery>
<!--ro, opt, bool, whether the device supports electric moped parking violation alarm restoring event, desc:eventType: BatteryCarRecovery-->true
</isSupportBatteryCarRecovery>
<isSupportDetectorTemperatureRecovery>
<!--ro, opt, bool, whether the device supports detector temperature alarm restoring event, desc:eventType: DetectorTemperatureRecovery-->true
</isSupportDetectorTemperatureRecovery>
<isSupportGetRFIDReaderWorkStatus>
<!--ro, opt, bool, whether the device supports getting RFID read/write working status, desc:GET /ISAPI/Traffic/UHFRFIDReader/GetRFIDReaderWorkStatus?
format=json-->true
</isSupportGetRFIDReaderWorkStatus>
<isSupportRFIDReaderWorkStatusCtrl>
<!--ro, opt, bool, whether the device supports RFID read/write working status control, desc:PUT /ISAPI/Traffic/UHFRFIDReader/RFIDReaderWorkStatusCtrl?
format=json-->true
</isSupportRFIDReaderWorkStatusCtrl>
<isSupportFlameCombustionStatusAlgorithmsVersion>
<!--ro, opt, bool, whether the device supports getting flame burning status detection algorithm version, desc:GET
/ISAPI/Intelligent/channels/<channelID>/FlameCombustionStatusAlgorithmsVersion?format=json-->true
</isSupportFlameCombustionStatusAlgorithmsVersion>
<isSupportTestResultUpload>
<!--ro, opt, bool, whether the device supports test result uploading event, desc:eventType: TestResultUpload-->true
</isSupportTestResultUpload>
</isSupportTestResultUpload>
<isSupportAutoTestParams>
<!--ro, opt, bool, whether the device supports automation testing parameters, desc:GET/PUT /ISAPI/System/AutoTest/AutoTestParams?format=json-->true
</isSupportAutoTestParams>
<isSupportExportATInstructRecord>
<!--ro, opt, bool, whether the device supports exporting AT command records, desc:POST /ISAPI/System/ExportATInstructRecord?format=json-->true
</isSupportExportATInstructRecord>
<isSupportOfflineVideoFileManagement>
<!--ro, opt, bool, whether the device supports offline video file management, desc:GET /ISAPI/ContentMgmt/OfflineVideoFileManagement/capabilities?
format=json-->true
</isSupportOfflineVideoFileManagement>
<isSupportChannelOccupySceneList>
<!--ro, opt, bool, whether the device supports getting the scene list of fire escape occupation, desc:GET
/ISAPI/Intelligent/channels/<channelID>/ChannelOccupySceneList?format=json-->true
</isSupportChannelOccupySceneList>
<isSupportChannelOccupyAlgorithmsVersion>
<!--ro, opt, bool, whether the device supports getting the algorithm version of fire escape occupation, desc:GET

m
/ISAPI/Intelligent/channels/<channelID>/ChannelOccupyAlgorithmsVersion?format=json-->true

co
</isSupportChannelOccupyAlgorithmsVersion>
<isSupportChannelOccupyOverlapParams>
<!--ro, opt, bool, whether the device supports overlay parameters of fire escape occupation, desc:GET/PUT

a.
/ISAPI/Intelligent/channels/<channelID>/ChannelOccupyOverlapParams?format=json-->true
</isSupportChannelOccupyOverlapParams>

C. arc
<isSupportChannelOccupyRuleParams>
<!--ro, opt, bool, whether the device supports rule parameters of fire escape occupation, desc:GET/PUT
/ISAPI/Intelligent/channels/<channelID>/ChannelOccupyRuleParams?format=json-->true
</isSupportChannelOccupyRuleParams>
<isSupportGotoChannelOccupyScene>

s, em
<!--ro, opt, bool, whether the device supports jumping to the specified fire escape occupation scene, desc:PUT

A
/ISAPI/Intelligent/channels/<channelID>/GotoChannelOccupyScene?format=json-->true

no fr
</isSupportGotoChannelOccupyScene>
<isSupportChannelPassingEvent>
<!--ro, opt, bool, whether the device supports vehicles passing outdoor fire escape, desc:eventType:channelPassingEvent-->true

ri on
</isSupportChannelPassingEvent>
<isSupportGunsHandoverRuleParams>
<!--ro, opt, bool, whether the device supports object handover rule parameters, desc:GET/PUT

Ma oc
/ISAPI/Intelligent/channels/<channelID>/GunsHandoverRuleParams?format=json-->true
</isSupportGunsHandoverRuleParams>
up
<isSupportBulkUpgradeChildDevice>
<!--ro, opt, bool, whether the device supports batch upgrading sub-devices, desc:POST /ISAPI/System/BulkUpgradeChildDeviceList?format=json-->true
</isSupportBulkUpgradeChildDevice>
co gr

<isSupportSearchBulkUpgradeChildDeviceProgress>
<!--ro, opt, bool, whether the device supports checking the progress of batch upgrading sub-devices, desc:PUT
/ISAPI/System/BulkUpgradeChildDeviceList/Search?format=json-->true
es a@

</isSupportSearchBulkUpgradeChildDeviceProgress>
<isSupportDash>
Fr rc

<!--ro, opt, bool, whether the device supports the dash event, desc:eventType:Dash-->true
s

</isSupportDash>
<isSupportStopRadarVideoAssistedFocusCalibrating>
y ema

<!--ro, opt, bool, whether the device supports stopping the calibration of radar-assisted focusing, desc:PUT
/ISAPI/Intelligent/radarVideoDetection/channels/<channelID>/StopRadarVideoAssistedFocusCalibrating?format=json-->true
</isSupportStopRadarVideoAssistedFocusCalibrating>
<isSupportRadarVideoAssistedFocusCalibrating>
os fr

<!--ro, opt, bool, whether the device supports the calibration of radar-assisted focusing, desc:GET/PUT
/ISAPI/Intelligent/radarVideoDetection/channels/<channelID>/RadarVideoAssistedFocusCalibrating?format=json-->true
</isSupportRadarVideoAssistedFocusCalibrating>
ad on

<isSupportRadarVideoAssistedFocusCalibratingStatus>
<!--ro, opt, bool, whether the device supports displaying the calibration status of radar-assisted focusing, desc:GET
/ISAPI/Intelligent/radarVideoDetection/channels/<channelID>/RadarVideoAssistedFocusCalibratingStatus?format=json-->true
el .c

</isSupportRadarVideoAssistedFocusCalibratingStatus>
<isSupportETCMatchResultUpload>
ez

<!--ro, opt, bool, whether the device supports uploading ETC vehicle comparison results, desc:eventType:ETCMatchResultUpload-->true
</isSupportETCMatchResultUpload>
<isSupportPartsLifeRemind>
en

<!--ro, opt, bool, whether the device supports prompting the life span of device component, desc:corresponding event: PartsLifeRemind-->true
</isSupportPartsLifeRemind>
<isSupportAuthorizeMicAcquisitionParam>
im

<!--ro, opt, bool, whether the device supports audio authorization information, desc:GET/PUT
ng

/ISAPI/System/InformedConsentMgr/AuthorizeMicAcquisitionParam?format=json-->true
Aj

</isSupportAuthorizeMicAcquisitionParam>
<isSupportTOFDetectEvent>
Co

<!--ro, opt, bool, whether the device supports TOF detection event, desc:eventType:TOFDetectEvent-->true
</isSupportTOFDetectEvent>
<isSupportAudioAnalysisResultOSDOverlay>
<!--ro, opt, bool, whether the device supports OSD parameters of audio analysis results, desc:GET/PUT
/ISAPI/Intelligent/SensitiveInfoAnalysis/AudioAnalysisResultOSDOverlay?format=json-->true
</isSupportAudioAnalysisResultOSDOverlay>
<isSupportChildPasswordStatus>
<!--ro, opt, bool, whether the device supports getting the activation password status of sub-devices, desc:GET
/ISAPI/System/activate/ChildPasswordStatus?format=json-->true
</isSupportChildPasswordStatus>
<isSupportMutexFunctionClose>
<!--ro, opt, bool, whether the device supports quickly disabling exclusive functions, desc:POST /ISAPI/System/mutexFunctionClose?format=json-->true
</isSupportMutexFunctionClose>
<isSupportFirePointAlarmRecovery>
<!--ro, opt, bool, whether the device supports fire detection alarm restoring event, desc:eventType:FirePointAlarmRecovery-->true
</isSupportFirePointAlarmRecovery>
<isSupportSmokeAlarmRecovery>
<!--ro, opt, bool, whether the device supports smoke alarm restoring event, desc:eventType:FirePointAlarmRecovery-->true
</isSupportSmokeAlarmRecovery>
<isSupportTemperatureMeasurementPreviewAlarmRecovery>
<!--ro, opt, bool, whether the device supports temperature measurement pre-alarm restoring event, desc:eventType:TemperatureMeasurementPreviewRecovery--
>true
</isSupportTemperatureMeasurementPreviewAlarmRecovery>
<isSupportTemperatureMeasurementAlarmRecovery>
<isSupportTemperatureMeasurementAlarmRecovery>
<!--ro, opt, bool, whether the device supports temperature measurement alarm restoring event, desc:eventType:TemperatureMeasurementRecovery-->true
</isSupportTemperatureMeasurementAlarmRecovery>
<isSupportUVPhotonDetection>
<!--ro, opt, bool, whether the device supports UV photon detection event, desc:eventType:UVPhotonDetection-->true
</isSupportUVPhotonDetection>
<isSupportUVPhotonTimeDetection>
<!--ro, opt, bool, whether the device supports UV photon scheduled-detection event, desc:eventType:UVPhotonTimeDetection-->true
</isSupportUVPhotonTimeDetection>
<isSupportPatientExpensesInfoQuery>
<!--ro, opt, bool, whether the device supports the patient cost search event, desc:eventType:PatientExpensesInfoQuery-->true
</isSupportPatientExpensesInfoQuery>
<isSupportReinforcementCallEvent>
<!--ro, opt, bool, whether the device supports reinforcement call event, desc:eventType:ReinforcementCallEvent-->true
</isSupportReinforcementCallEvent>
<isSupportChargeMode>

m
<!--ro, opt, bool, whether the device supports charging mode, desc:GET/PUT /ISAPI/System/ChargeMode?format=json-->true
</isSupportChargeMode>

co
<isSupportCombinationRuleParams>
<!--ro, opt, bool, whether the device supports combination rule parameters of perimeter detection, desc:GET/PUT

a.
/ISAPI/Intelligent/channels/<channelID>/PerimeterCombinationDetection/CombinationRuleParams?format=json-->true
</isSupportCombinationRuleParams>
<isSupportSwitchHolidayPlanCfg>

C. arc
<!--ro, opt, bool, whether the device supports the regular startup/shutdown on holiday, desc:GET/PUT /ISAPI/System/SwitchHolidayPlanCfg?format=json--
>true
</isSupportSwitchHolidayPlanCfg>
<isSupportSwitchIrregularHolidayPlanCfg>

s, em
<!--ro, opt, bool, whether the device supports irregular startup/shutdown on holiday, desc:GET/PUT /ISAPI/System/SwitchIrregularHolidayPlanCfg?
format=json-->true

A
</isSupportSwitchIrregularHolidayPlanCfg>

no fr
<isSupportSearchPresetConfigInfo>
<!--ro, opt, bool, whether the device supports searching for the configuration of specified presets, desc:POST

ri on
/ISAPI/Intelligent/channels/<channelID>/SearchPresetConfigInfo?format=json-->true
</isSupportSearchPresetConfigInfo>
<isSupportSwitchPlanCfg>

Ma oc
<!--ro, opt, bool, whether the device supports startup/shutdown schedule, desc:GET/PUT /ISAPI/System/SwitchPlanCfg?format=json-->true
</isSupportSwitchPlanCfg>
<isSupportVegetationSpectrumDetection>
up
<!--ro, opt, bool, whether the device supports vegetation spectrum detection, desc:eventType:VegetationSpectrumDetection-->true
</isSupportVegetationSpectrumDetection>
co gr

<isSupportCaptureResultAttributeSearch>
<!--ro, opt, bool, whether the device supports searching for attributes of human body capture, desc:POST
/ISAPI/Intelligent/CaptureResultAttributeSearch?format=json-->true
es a@

</isSupportCaptureResultAttributeSearch>
<isSupportHealthEducationInfoReadStatus>
<!--ro, opt, bool, whether the device supports the event of uploading the reading status of health education information,
Fr rc

desc:eventType:HealthEducationInfoReadStatus-->true
</isSupportHealthEducationInfoReadStatus>
<isSupportNurseLocationEvent>
y ema

<!--ro, opt, bool, whether the device supports nurse locating event, desc:eventType:NurseLocationEvent-->true
</isSupportNurseLocationEvent>
<isSupportModifyChildDevResource>
<!--ro, opt, bool, whether the device supports editing gateway resource information, desc:POST /ISAPI/System/DynamicResource/ModifyChildDevResource?
os fr

format=json-->true
</isSupportModifyChildDevResource>
ad on

<isSupportDiagnosisDataCollectionParams>
<!--ro, opt, bool, whether the device supports diagnosis data statistics parameters, desc:GET/PUT /ISAPI/System/DiagnosisDataCollectionParams?
format=json-->true
el .c

</isSupportDiagnosisDataCollectionParams>
<isSupportServicePlatformAccountAuth>
<!--ro, opt, bool, whether the device supports platform account authentication, desc:GET /ISAPI/Security/ServicePlatformAccountAuth/capabilities?
ez

format=json-->true
</isSupportServicePlatformAccountAuth>
en

<isSupportSyncPatientInfoEvent>
<!--ro, opt, bool, whether the device supports synchronizing patient information, desc:eventType:SyncPatientInfoEvent-->true
</isSupportSyncPatientInfoEvent>
im

<isSupportAuthenticationNetworkCfg>
<!--ro, opt, bool, whether the device supports the authentication parameters of networking method, desc:GET/PUT
ng

/ISAPI/Security/ProtocolCertificate/AuthenticationNetworkCfg?format=json-->true
Aj

</isSupportAuthenticationNetworkCfg>
Co

<isSupportPersonnelChannelLogParams>
<!--ro, opt, bool, whether the device supports turnstile log parameters, desc:GET/PUT /ISAPI/ContentMgmt/PersonnelChannelLogParams?format=json-->true
</isSupportPersonnelChannelLogParams>
<isSupportElectricSaveModeParams>
<!--ro, opt, bool, whether the device supports power-saving mode parameters, desc:GET/PUT /ISAPI/System/ElectricSaveModeParams?format=json-->true
</isSupportElectricSaveModeParams>
<isSupportChannelOccupyPOSParams>
<!--ro, opt, bool, whether the device supports overlaying POS information on the outdoor access blocking detection data, desc:GET/PUT
/ISAPI/Intelligent/channels/<channelID>/ChannelOccupyPOSParams?format=jsonGET or PUT
/ISAPI/Intelligent/channels/<channelID>/SafetyWorkwearDetectionRuleParams?format=json-->true
</isSupportChannelOccupyPOSParams>
<isSupportChildPowerTimePlanParams>
<!--ro, opt, bool, whether the device supports power-off schedule parameters of sub-devices, desc:GET/PUT /ISAPI/System/ChildPowerTimePlanParams?
format=json-->true
</isSupportChildPowerTimePlanParams>
<isSupportPowerIndicatorLightCtrlParams>
<!--ro, opt, bool, whether the device supports parameters of device battery indicator control, desc:GET/PUT /ISAPI/System/PowerIndicatorLightCtrlParams?
format=json-->true
</isSupportPowerIndicatorLightCtrlParams>
<isSupportRadarVideoMapDetectionParams>
<!--ro, opt, bool, whether the device supports parameters of radar-assisted map detection, desc:GET
/ISAPI/Intelligent/radarVideoDetection/channels/<channelID>/RadarVideoMapDetectionParams?format=json-->true
</isSupportRadarVideoMapDetectionParams>
<isSupportRadarPOSParams>
<isSupportRadarPOSParams>
<!--ro, opt, bool, whether the device supports overlaying POS information on the radar detection data, desc:GET/PUT
/ISAPI/System/Video/inputs/channels/<channelID>/RadarPOSParams?format=json-->true
</isSupportRadarPOSParams>
<isSupportVideoIntercomModeEvent>
<!--ro, opt, bool, whether the device supports the two-way audio mode event, desc:eventType:VideoIntercomModeEvent-->true
</isSupportVideoIntercomModeEvent>
<isSupportSoftwareAndHardwareCtrlParams>
<!--ro, opt, bool, whether the device supports parameters of hardware and software service control, desc:GET/PUT
/ISAPI/System/FunctionSwitchCtrl/SoftwareAndHardwareCtrlParams?format=json-->true
</isSupportSoftwareAndHardwareCtrlParams>
<isSupportUserLoginAbnormal>
<!--ro, opt, bool, whether the device supports user login exception information, desc:GET/PUT /ISAPI/Security/users/UserLoginAbnormal?format=json-->true
</isSupportUserLoginAbnormal>
<isSupportIndustryThermometryAdvancedParam>
<!--ro, opt, bool, whether the device supports the advanced parameters of industrial temperature measurement, desc:GET/PUT
/ISAPI/Thermal/channels/<channelID>/IndustryThermometryAdvancedParam?format=json-->true

m
</isSupportIndustryThermometryAdvancedParam>

co
<isSupportGotoVideoRecheckScene>
<!--ro, opt, bool, whether the device supports jumping to the specified scene of water level recheck detection, desc:POST
/ISAPI/Event/channels/<channelID>/GotoVideoRecheckScene?format=json-->true

a.
</isSupportGotoVideoRecheckScene>
<isSupportVideoRecheckRuleParams>

C. arc
<!--ro, opt, bool, whether the device supports rule parameters of water level recheck scene, desc:PUT
/ISAPI/Event/channels/<channelID>/VideoRecheckRuleParams?format=json-->true
</isSupportVideoRecheckRuleParams>
<isSupportVideoRecheckSceneList>

s, em
<!--ro, opt, bool, whether the device supports getting the list of water level recheck detection scenes, desc:GET
/ISAPI/Event/channels/<channelID>/VideoRecheckSceneList?format=json-->true

A
</isSupportVideoRecheckSceneList>

no fr
<isSupportPeopleSedentary>
<!--ro, opt, bool, whether the device supports sedentary detection, desc:eventType:PeopleSedentary-->true
</isSupportPeopleSedentary>

ri on
<isSupportPeopleFallingDownDetection>
<!--ro, opt, bool, whether the device supports person fall detection, desc:eventType:PeopleFallingDownDetection-->true

Ma oc
</isSupportPeopleFallingDownDetection>
<isSupportBridgeDeflectionTargetCalibration>
<!--ro, opt, bool, whether the device supports target calibration of bridge deflection, desc:PUT
up
/ISAPI/Intelligent/channels/<channelID>/BridgeDeflectionTargetCalibration?format=json-->true
</isSupportBridgeDeflectionTargetCalibration>
<isSupportGetBridgeDeflectionTargetCalibrationStatus>
co gr

<!--ro, opt, bool, whether the device supports getting the target calibration status of bridge deflection, desc:GET
/ISAPI/Intelligent/channels/<channelID>/GetBridgeDeflectionTargetCalibrationStatus?format=json-->true
</isSupportGetBridgeDeflectionTargetCalibrationStatus>
es a@

<isSupportBridgeDeflectionMonitoringRuleParams>
<!--ro, opt, bool, whether the device supports the rule parameters of bridge deflection monitoring, desc:GET/PUT
Fr rc

/ISAPI/Intelligent/channels/<channelID>/BridgeDeflectionMonitoringRuleParams?format=json-->true
s

</isSupportBridgeDeflectionMonitoringRuleParams>
<isSupportHardwareReboot>
y ema

<!--ro, opt, bool, whether the device supports hardware rebooting, desc:PUT /ISAPI/System/HardwareReboot?format=json-->true
</isSupportHardwareReboot>
<isSupportSearchSceneCalibrationStatus>
<!--ro, opt, bool, whether the device supports searching for calibration status of multiple channels by scene, desc:POST
os fr

/ISAPI/System/setupCalibration/channels/<channelID>/SearchSceneCalibrationStatus?format=json-->true
</isSupportSearchSceneCalibrationStatus>
<isSupportSearchSceneCalibration>
ad on

<!--ro, opt, bool, whether the device supports searching for calibration status of multiple channels by scene, desc:POST
/ISAPI/System/setupCalibration/channels/<channelID>/SearchSceneCalibration?format=json-->true
el .c

</isSupportSearchSceneCalibration>
<isSupportSoundSourceLocationRuleParams>
<!--ro, opt, bool, whether the device supports rule parameters of sound source locating, desc:GET/PUT
ez

/ISAPI/System/SoundSourceLocation/AudioIn/<AudioInID>/SoundSourceLocationRuleParams?format=json-->true
</isSupportSoundSourceLocationRuleParams>
<isSupportPersonnelChannelLogDebug>
en

<!--ro, opt, bool, whether the device supports debugging commands of turnstile logs, desc:GET /ISAPI/ContentMgmt/PersonnelChannelLogDebug/capabilities?
format=json-->true
im

</isSupportPersonnelChannelLogDebug>
<isSupportCheckDeviceExistNUCFile>
ng

<!--ro, opt, bool, whether the device supports checking the locally stored the NUC file, desc:GET
Aj

/ISAPI/System/VideoQualityMeasurementCollection/channels/<channelID>/CheckDeviceExistNUCFile?format=json-->true
</isSupportCheckDeviceExistNUCFile>
Co

<isSupportExportSmartDataData>
<!--ro, opt, bool, whether the device supports exporting smart data, desc:GET /ISAPI/System/VideoQualityMeasurementCollection/ExportSmartDataData?
format=json-->true
</isSupportExportSmartDataData>
<isSupportGetCollectImageCalculateResult>
<!--ro, opt, bool, whether the device supports getting the calculation result of image collection, desc:GET
/ISAPI/System/VideoQualityMeasurementCollection/channels/<channelID>/GetCollectImageCalculateResult?format=json-->true
</isSupportGetCollectImageCalculateResult>
<isSupportAIOPAlarmTrans>
<!--ro, opt, bool, whether the device supports uploading AIOP-related events via ISAPI message transmitted by COMM_VCA_ALARM,
desc:AIOP-related events include the following binary alarm types defined in HCNetSDK:
AIOP-accessed video detection alarm information (binary alarm: COMM_UPLOAD_AIOP_VIDEO, ISAPI alarm: AIOP_Video), AIOP-accessed picture detection alarm
information (binary alarm: COMM_UPLOAD_AIOP_PICTURE, ISAPI alarm: AIOP_Picture), AIOP-accessed capture polling detection alarm information (binary alarm:
COMM_UPLOAD_AIOP_POLLING_SNAP, ISAPI alarm: AIOP_Polling_Snap), AIOP-accessed video polling detection alarm information (binary alarm:
COMM_UPLOAD_AIOP_POLLING_VIDEO, ISAPI alarm: AIOP_Polling_Video))-->true
</isSupportAIOPAlarmTrans>
<isSupportLongDistanceRace>
<!--ro, opt, bool, whether the device supports long-distance race event, desc:eventType:LongDistanceRace-->true
</isSupportLongDistanceRace>
<isSupportIndicatorLightAbnormal>
<!--ro, opt, bool, whether the device supports abnormal alarm indicator event, desc:eventType:IndicatorLightAbnormal-->true
</isSupportIndicatorLightAbnormal>
<isSupportVideoLostPictureStatus>
<!--ro, opt, bool, whether the device supports the status of custom pictures displayed when video loss occurred, desc:GET
/ISAPI/System/Video/videolosses/VideoLostPictureStatus?format=json-->true
</isSupportVideoLostPictureStatus>
<DualVCA>
<!--ro, opt, object-->
<isSupportdualVCAList>
<!--ro, opt, bool-->true
</isSupportdualVCAList>
<enabled opt="true,false" def="true">
<!--ro, opt, bool, attr:opt{req, string},def{req, bool}-->true
</enabled>
</DualVCA>
<isSupportGetScopeCalibrationStatus>
<!--ro, opt, bool, whether the device supports getting the scope calibration status, desc:GET
/ISAPI/Intelligent/channels/<channelID>/GetScopeCalibrationStatus?format=json-->true
</isSupportGetScopeCalibrationStatus>

m
<isSupportSearchShootTableUserGroupParams>

co
<!--ro, opt, bool, whether the device supports searching for the parameters of specified zeroing profiles, desc:POST
/ISAPI/Intelligent/channels/<channelID>/SearchShootTableUserGroupParams?format=json-->true
</isSupportSearchShootTableUserGroupParams>

a.
<isSupportModifyCurrentShootTableParams>
<!--ro, opt, bool, whether the device supports editing the information of current valid zeroing profiles, desc:PUT
/ISAPI/Intelligent/channels/<channelID>/ModifyCurrentShootTableParams?format=json-->true

C. arc
</isSupportModifyCurrentShootTableParams>
<isSupportCalibrateScopeTargetPointPosition>
<!--ro, opt, bool, whether the device supports calibrating the absolute position of the sight cross and drop point, desc:PUT
/ISAPI/Intelligent/channels/<channelID>/CalibrateScopeTargetPointPosition?format=json-->true

s, em
</isSupportCalibrateScopeTargetPointPosition>
<isSupportGetCurrentShootTableParams>

A
<!--ro, opt, bool, whether the device supports getting the information of the current valid zeroing profiles, desc:GET

no fr
/ISAPI/Intelligent/channels/<channelID>/GetCurrentShootTableParams?format=json-->true
</isSupportGetCurrentShootTableParams>

ri on
<isSupportVideoGunsightRuleParam>
<!--ro, opt, bool, whether the device supports rule parameters of video scope, desc:GET/PUT
/ISAPI/Intelligent/channels/<channelID>/VideoGunsightRuleParam?format=json-->true

Ma oc
</isSupportVideoGunsightRuleParam>
<isSupportFinishCollectImageData>
<!--ro, opt, bool, whether it supports completing the collection of image data, desc:GET
up
/ISAPI/System/VideoQualityMeasurementCollection/channels/<channelID>/FinishCollectImageData?format=json-->true
</isSupportFinishCollectImageData>
co gr

<isSupportStartCollectImageData>
<!--ro, opt, bool, whether it supports starting collecting image data, desc:GET
/ISAPI/System/VideoQualityMeasurementCollection/channels/<channelID>/StartCollectImageData?format=json-->true
es a@

</isSupportStartCollectImageData>
<isSupportSearchBridgeDeflectionMonitoringEvent>
<!--ro, opt, bool-->true
Fr rc

</isSupportSearchBridgeDeflectionMonitoringEvent>
<isSupportGetAllPIPCofigParams>
y ema

<!--ro, opt, bool-->true


</isSupportGetAllPIPCofigParams>
<isSupportManualDetectionCarriageClearStatus>
<!--ro, opt, bool-->true
os fr

</isSupportManualDetectionCarriageClearStatus>
<isSupportGetCarriageClearCalibrationStatus>
<!--ro, opt, bool-->true
ad on

</isSupportGetCarriageClearCalibrationStatus>
<isSupportModifyCarriageClearCalibration>
<!--ro, opt, bool-->true
el .c

</isSupportModifyCarriageClearCalibration>
<isSupportCarriageClearRuleParams>
ez

<!--ro, opt, bool-->true


</isSupportCarriageClearRuleParams>
<isSupportRadarFallenObjectsOnTracks>
en

<!--ro, opt, bool-->true


</isSupportRadarFallenObjectsOnTracks>
<isSupportTemperatureRiseCalibrationParams>
im

<!--ro, opt, bool-->true


</isSupportTemperatureRiseCalibrationParams>
ng

<isSupportStartTemperatureRiseCalibration>
Aj

<!--ro, opt, bool-->true


Co

</isSupportStartTemperatureRiseCalibration>
<isSupportGetTemperatureRiseCalibrationStatus>
<!--ro, opt, bool-->true
</isSupportGetTemperatureRiseCalibrationStatus>
<isSupportExportTemperatureRiseCalibrationFile>
<!--ro, opt, bool-->true
</isSupportExportTemperatureRiseCalibrationFile>
<isSupportGetTemperatureRiseCorrectionVersion>
<!--ro, opt, bool-->true
</isSupportGetTemperatureRiseCorrectionVersion>
<isSupportSearchImportDeviceDataTaskProgress>
<!--ro, opt, bool-->true
</isSupportSearchImportDeviceDataTaskProgress>
<isSupportSearchExportDeviceDataTaskProgress>
<!--ro, opt, bool-->true
</isSupportSearchExportDeviceDataTaskProgress>
<isSupportAddImportDeviceDataTask>
<!--ro, opt, bool-->true
</isSupportAddImportDeviceDataTask>
<isSupportAddExportDeviceDataTask>
<!--ro, opt, bool-->true
</isSupportAddExportDeviceDataTask>
<isSupportSearchRecordStorage>
<!--ro, opt, bool-->true
<!--ro, opt, bool-->true
</isSupportSearchRecordStorage>
<isSupportDetectionPathRuleParams>
<!--ro, opt, bool-->true
</isSupportDetectionPathRuleParams>
<isSupportSearchObjectDistanceFocusInfoList>
<!--ro, opt, bool-->true
</isSupportSearchObjectDistanceFocusInfoList>
<isSupportMoveObjectDistanceFocusLocation>
<!--ro, opt, bool-->true
</isSupportMoveObjectDistanceFocusLocation>
<isSupportAddObjectDistanceFocusInfo>
<!--ro, opt, bool-->true
</isSupportAddObjectDistanceFocusInfo>
<isSupportModifyObjectDistanceFocusInfo>
<!--ro, opt, bool-->true

m
</isSupportModifyObjectDistanceFocusInfo>
<isSupportObjectDistanceCalibrateAutoFocusParams>

co
<!--ro, opt, bool-->true
</isSupportObjectDistanceCalibrateAutoFocusParams>
<isSupportExpresswayNetworkTollAccessParams>

a.
<!--ro, opt, bool-->true
</isSupportExpresswayNetworkTollAccessParams>

C. arc
<isSupportControlCameraDetectAction>
<!--ro, opt, bool-->true
</isSupportControlCameraDetectAction>
<isSupportObjectDistanceAccessWay>

s, em
<!--ro, opt, bool-->true
</isSupportObjectDistanceAccessWay>

A
<isSupportCancelTemperatureRiseCalibration>

no fr
<!--ro, opt, bool-->true
</isSupportCancelTemperatureRiseCalibration>
<isSupportRTCTimeTrigger>

ri on
<!--ro, opt, bool-->true
</isSupportRTCTimeTrigger>

Ma oc
<isSupportChargingGunAbnormalEvent>
<!--ro, opt, bool-->true
</isSupportChargingGunAbnormalEvent>
up
<isSupportVideoChannelEnhance>
<!--ro, opt, bool-->true
</isSupportVideoChannelEnhance>
co gr

<isSupportDeleteObjectDistanceFocusInfo>
<!--ro, opt, bool-->true
es a@

</isSupportDeleteObjectDistanceFocusInfo>
<isSupportGetStartTemperatureRiseCalibrationParams>
<!--ro, opt, bool-->true
Fr rc

</isSupportGetStartTemperatureRiseCalibrationParams>
s

<isSupportSearchAudioRecordPlan>
<!--ro, opt, bool-->true
y ema

</isSupportSearchAudioRecordPlan>
<isSupportCleanerDetectionOverlapParams>
<!--ro, opt, bool-->true
</isSupportCleanerDetectionOverlapParams>
os fr

<isSupportWaterLevelVerticalAreaDisplayParams>
<!--ro, opt, bool-->true
</isSupportWaterLevelVerticalAreaDisplayParams>
ad on

<isSupportGetRecordStatusList>
<!--ro, opt, bool-->true
el .c

</isSupportGetRecordStatusList>
<isSupportWiperClean>
<!--ro, opt, bool-->true
ez

</isSupportWiperClean>
<isSupportGetNATStatus>
<!--ro, opt, bool-->true
en

</isSupportGetNATStatus>
<isSupportRestoreSensitivityDefaultParams>
im

<!--ro, opt, bool-->true


</isSupportRestoreSensitivityDefaultParams>
ng

<isSupportCarryPassengersPricingStatus>
Aj

<!--ro, opt, bool-->true


</isSupportCarryPassengersPricingStatus>
Co

<isSupportCarryPassengersNoPricing>
<!--ro, opt, bool-->true
</isSupportCarryPassengersNoPricing>
<isSupportNPlusMultiple>
<!--ro, opt, bool-->true
</isSupportNPlusMultiple>
<ifPopUpNetWorkCfgSetting>
<!--ro, opt, bool-->true
</ifPopUpNetWorkCfgSetting>
<AudioOutputChannelCfg>
<!--ro, opt, object-->
<AudioOutputChannelIDList>
<!--ro, opt, array, subType:object-->
<AudioOutputChannelID>
<!--ro, req, int-->1
</AudioOutputChannelID>
</AudioOutputChannelIDList>
</AudioOutputChannelCfg>
<isSupportImportTemperatureRiseCalibrationFile>
<!--ro, opt, bool-->true
</isSupportImportTemperatureRiseCalibrationFile>
<isSupportGetAPPQRCodePic>
<!--ro, opt, bool-->true
</isSupportGetAPPQRCodePic>
<isSupportPersionQueueRealTimeData>
<!--ro, opt, bool-->true
</isSupportPersionQueueRealTimeData>
<isSupportImageVignettingOptimizeParams>
<!--ro, opt, bool-->true
</isSupportImageVignettingOptimizeParams>
<isSupportStartMultispectralCalibration>
<!--ro, opt, bool-->true
</isSupportStartMultispectralCalibration>
<isSupportGetMultispectralCalibrationStatus>
<!--ro, opt, bool-->true
</isSupportGetMultispectralCalibrationStatus>
<isSupportStopRadarVideoTargetTracking>
<!--ro, opt, bool-->true
</isSupportStopRadarVideoTargetTracking>

m
<isSupportGetRadarVideoTargetTrackingStatus>

co
<!--ro, opt, bool-->true
</isSupportGetRadarVideoTargetTrackingStatus>
<isSupportStartRadarVideoTargetTracking>

a.
<!--ro, opt, bool-->true
</isSupportStartRadarVideoTargetTracking>
<isSupportBatteryChargeCtrl>

C. arc
<!--ro, opt, bool-->true
</isSupportBatteryChargeCtrl>
<isUpgrageAuxDevice opt="true,false">
<!--ro, opt, string, attr:opt{opt, string}-->true

s, em
</isUpgrageAuxDevice>

A
<isSupportClearFile>

no fr
<!--ro, opt, bool-->true
</isSupportClearFile>
<isSupportRestoreDefaultParamByChannel>

ri on
<!--ro, opt, bool-->true
</isSupportRestoreDefaultParamByChannel>
<isSupportGetMultispectralCalibrationParams>

Ma oc
<!--ro, opt, bool-->true
</isSupportGetMultispectralCalibrationParams>
up
<isSupportGetThermometryCalibrationData>
<!--ro, opt, bool-->true
</isSupportGetThermometryCalibrationData>
co gr

<isSupportImportEncryptedComponentFile>
<!--ro, opt, bool-->true
</isSupportImportEncryptedComponentFile>
es a@

<isSupportGetFrameMeanValue>
<!--ro, opt, bool-->true
</isSupportGetFrameMeanValue>
Fr rc

<isSupportGetBaffleImage>
<!--ro, opt, bool-->true
y ema

</isSupportGetBaffleImage>
<isSupportThermometryGainMode>
<!--ro, opt, bool-->true
</isSupportThermometryGainMode>
os fr

<isSupportGetChannelEnhancePreOperationTips>
<!--ro, opt, bool-->true
</isSupportGetChannelEnhancePreOperationTips>
ad on

<isSupportGetDeviceNetworkLinkStatus>
<!--ro, opt, bool-->true
</isSupportGetDeviceNetworkLinkStatus>
el .c

<isSupportManualRefreshOnlineUserList>
<!--ro, opt, bool-->true
ez

</isSupportManualRefreshOnlineUserList>
<isSupportVCAAlarmTrans>
<!--ro, opt, bool-->true
en

</isSupportVCAAlarmTrans>
<isSupportHumidityEvent>
<!--ro, opt, bool-->true
im

</isSupportHumidityEvent>
ng

<isSupportHumidityDetectionParams>
Aj

<!--ro, opt, bool-->true


</isSupportHumidityDetectionParams>
Co

<isSupportDisplayThermometryFirePrevention>
<!--ro, opt, bool-->true
</isSupportDisplayThermometryFirePrevention>
<isSupportPreRemoteCheckEvent>
<!--ro, opt, bool-->true
</isSupportPreRemoteCheckEvent>
<isSupportSearchExportDeviceStatusTaskProgress>
<!--ro, opt, bool-->true
</isSupportSearchExportDeviceStatusTaskProgress>
<isSupportAddExportDeviceStatusTask>
<!--ro, opt, bool-->true
</isSupportAddExportDeviceStatusTask>
<isSupportInsulatorThermometryRuleParams>
<!--ro, opt, bool-->true
</isSupportInsulatorThermometryRuleParams>
<isSupportInsulatorCruiseParams>
<!--ro, opt, bool-->true
</isSupportInsulatorCruiseParams>
<isSupportModifyInsulatorDetectionRegion>
<!--ro, opt, bool-->true
</isSupportModifyInsulatorDetectionRegion>
<isSupportMoveInsulatorPosition>
<!--ro, opt, bool-->true
</isSupportMoveInsulatorPosition>
</isSupportMoveInsulatorPosition>
<isSupportDeleteInsulatorGroup>
<!--ro, opt, bool-->true
</isSupportDeleteInsulatorGroup>
<isSupportGenerateInsulatorRuleRegion>
<!--ro, opt, bool-->true
</isSupportGenerateInsulatorRuleRegion>
<isSupportGetInsulatorAllName>
<!--ro, opt, bool-->true
</isSupportGetInsulatorAllName>
<isSupportSearchUploadLog>
<!--ro, opt, bool-->true
</isSupportSearchUploadLog>
<isSupportRainfallTelemeter>
<!--ro, opt, bool-->true
</isSupportRainfallTelemeter>

m
<isSupportPosOverlayTest>
<!--ro, opt, bool-->true

co
</isSupportPosOverlayTest>
<isSupportFullScreenPosOverlay>

a.
<!--ro, opt, bool-->true
</isSupportFullScreenPosOverlay>
<isSupportVCAOptimizeDisplay>

C. arc
<!--ro, opt, bool-->true
</isSupportVCAOptimizeDisplay>
<isSupportAddInsulatorGroup>
<!--ro, opt, bool-->true

s, em
</isSupportAddInsulatorGroup>
<isSupportSearchInsulatorParams>

A
<!--ro, opt, bool-->true

no fr
</isSupportSearchInsulatorParams>
<isSupportSetInsulatorParams>

ri on
<!--ro, opt, bool-->true
</isSupportSetInsulatorParams>
<isSupportInsulatorAbnormalAlarm>

Ma oc
<!--ro, opt, bool-->true
</isSupportInsulatorAbnormalAlarm>
<isSupportGetFlashLifespanInfo>
up
<!--ro, opt, bool-->true
</isSupportGetFlashLifespanInfo>
<isSupportCrowdDispersing>
co gr

<!--ro, opt, bool-->true


</isSupportCrowdDispersing>
es a@

<isSupportPeripheralAbnormalEvent>
<!--ro, opt, bool-->true
</isSupportPeripheralAbnormalEvent>
Fr rc

<isSupportPeripheralAbnormalTrigger>
<!--ro, opt, bool-->true
</isSupportPeripheralAbnormalTrigger>
y ema

<isSupportBodyCameraAbnormalEvent>
<!--ro, opt, bool-->true
</isSupportBodyCameraAbnormalEvent>
<isSupportDeviceWorkModeAsyncStatusEvent>
os fr

<!--ro, opt, bool-->true


</isSupportDeviceWorkModeAsyncStatusEvent>
ad on

<isSupportDeviceUserAsyncStatusEvent>
<!--ro, opt, bool-->true
</isSupportDeviceUserAsyncStatusEvent>
el .c

<isSupportVideoCodingAsyncStatusEvent>
<!--ro, opt, bool-->true
</isSupportVideoCodingAsyncStatusEvent>
ez

<isSupportRecordAsyncStatusEvent>
<!--ro, opt, bool-->true
en

</isSupportRecordAsyncStatusEvent>
<isSupportISUPAccessAsyncStatusEvent>
<!--ro, opt, bool-->true
im

</isSupportISUPAccessAsyncStatusEvent>
<isSupportWirelessConfigListAsyncStatusEvent>
ng

<!--ro, opt, bool-->true


Aj

</isSupportWirelessConfigListAsyncStatusEvent>
<isSupportDeviceLocationAsyncStatusEvent>
Co

<!--ro, opt, bool-->true


</isSupportDeviceLocationAsyncStatusEvent>
<isSupportVideoCodingAsyncParams>
<!--ro, opt, bool-->true
</isSupportVideoCodingAsyncParams>
<isSupportMoveShield>
<!--ro, opt, bool-->true
</isSupportMoveShield>
<isSupportStopAutoGenerateShield>
<!--ro, opt, bool-->true
</isSupportStopAutoGenerateShield>
<isSupportStartGenerateParams>
<!--ro, opt, bool-->true
</isSupportStartGenerateParams>
<isSupportIntelligentShieldAlgorithmsVersion>
<!--ro, opt, bool-->true
</isSupportIntelligentShieldAlgorithmsVersion>
<isSupportConvertShield>
<!--ro, opt, bool-->true
</isSupportConvertShield>
<isSupportDeleteShield>
<!--ro, opt, bool-->true
</isSupportDeleteShield>
</isSupportDeleteShield>
<isSupportGetGenerateParams>
<!--ro, opt, bool-->true
</isSupportGetGenerateParams>
<isSupportManualAddShield>
<!--ro, opt, bool-->true
</isSupportManualAddShield>
<isSupportIntelligentShieldParams>
<!--ro, opt, bool-->true
</isSupportIntelligentShieldParams>
<isSupportIntelligentShieldListParams>
<!--ro, opt, bool-->true
</isSupportIntelligentShieldListParams>
<isSupportDeicingCfg>
<!--ro, opt, bool-->true
</isSupportDeicingCfg>
</DeviceCap>

m
co
16.1.9.4 Get the languages supported by the device

a.
Request URL

C. arc
GET /ISAPI/System/DeviceLanguage
Query Parameter

s, em
A
None

no fr
Request Message

ri on
None

Ma oc
Response Message up
<?xml version="1.0" encoding="UTF-8"?>
co gr

<DeviceLanguage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, languages supported by the device, attr:version{req, string, protocolVersion}-->
<language>
es a@

<!--ro, req, enum, language, subType:string, desc:"SimChinese" (simplified Chinese), "TraChinese" (traditional Chinese), "English", "Russian",
"Bulgarian", "Hungarian", "Greek", "German", "Italian", "Czech", "Slovakia", "French", "Polish", "Dutch", "Portuguese", "Spanish", "Romanian", "Turkish",
"Japanese", "Danish", "Swedish", "Norwegian", "Finnish", "Korean", "Thai", "Estonia", "Vietnamese", "Hebrew", "Latvian", "Arabic", "Sovenian"-Slovenian,
Fr rc

"Croatian", "Lithuanian", "Serbian", "BrazilianPortuguese"-Brazilian Portuguese, "Indonesian", "Ukrainian", "EURSpanish", "Sovenian", "Uzbek", "Kazak",
"Kirghiz", "Farsi", "Azerbaidzhan", "Burmese", "Mongolian"-->SimChinese
y ema

</language>
</DeviceLanguage>
os fr

16.1.9.5 Set device language parameters


ad on

Request URL
el .c

PUT /ISAPI/System/DeviceLanguage
Query Parameter
ez

None
en

Request Message
im
ng

<?xml version="1.0" encoding="UTF-8"?>


Aj

<DeviceLanguage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


Co

<!--req, object, languages supported by the device, attr:version{req, string, protocolVersion}-->


<language>
<!--req, enum, language, subType:string, desc:"SimChinese" (simplified Chinese), "TraChinese" (traditional Chinese), "English", "Russian", "Bulgarian",
"Hungarian", "Greek", "German", "Italian", "Czech", "Slovakia", "French", "Polish", "Dutch", "Portuguese", "Spanish", "Romanian", "Turkish", "Japanese",
"Danish", "Swedish", "Norwegian", "Finnish", "Korean", "Thai", "Estonia", "Vietnamese", "Hebrew", "Latvian", "Arabic", "Sovenian" (Slovenian), "Croatian",
"Lithuanian", "Serbian", "BrazilianPortuguese" (Brazilian Portuguese), "Indonesian", "Ukrainian", "EURSpanish"-->SimChinese
</language>
</DeviceLanguage>

Response Message
<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, response message, attr:version{ro, req, string, protocolVersion}-->
<requestURL>
<!--ro, req, string, request URL-->null
</requestURL>
<statusCode>
<!--ro, req, enum, status code, subType:int, desc:0 (OK), 1 (OK), 2 (Device Busy), 3 (Device Error), 4 (Invalid Operation), 5 (Invalid XML Format), 6
(Invalid XML Content), 7 (Reboot Required)-->0
</statusCode>
<statusString>
<!--ro, req, enum, status information, subType:string, desc:"OK" (succeeded), "Device Busy", "Device Error", "Invalid Operation", "Invalid XML Format",
"Invalid XML Content", "Reboot" (reboot device)-->OK

m
</statusString>
<subStatusCode>

co
<!--ro, req, string, sub status code, which describes the error in details, desc:sub status code, which describes the error in details-->OK
</subStatusCode>
</ResponseStatus>

a.
C. arc
16.1.9.6 Get the capability of configuring the device language
Request URL

s, em
A
GET /ISAPI/System/DeviceLanguage/capabilities

no fr
Query Parameter

ri on
None

Ma oc
Request Message
None
up
Response Message
co gr

<?xml version="1.0" encoding="UTF-8"?>


es a@

<DeviceLanguage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


Fr rc

<!--ro, opt, object, device language configuration, attr:version{req, string, protocolVersion}-->


s

<language
opt="SimChinese,TraChinese,English,Russian,Bulgarian,Hungarian,Greek,German,Italian,Czech,Slovakia,French,Polish,Dutch,Portuguese,Spanish,Romanian,Turkish,J
y ema

apanese,Danish,Swedish,Norwegian,Finnish,Korean,Thai,Estonia,Vietnamese,Hebrew,Latvian,Arabic,Sovenian,Croatian,Lithuanian,Serbian,BrazilianPortuguese,Indon
esian,Ukrainian,EURSpanish,Uzbek,Kazak,Kirghiz,Farsi,Azerbaidzhan,Burmese,Mongolian,Anglicism,Estonian">
<!--ro, req, enum, language, subType:string, attr:opt{req, string}, desc:"SimChinese" (simplified Chinese), "TraChinese" (traditional Chinese),
"English", "Russian", "Bulgarian", "Hungarian", "Greek", "German", "Italian", "Czech", "Slovakia", "French", "Polish", "Dutch", "Portuguese", "Spanish",
os fr

"Romanian", "Turkish", "Japanese", "Danish", "Swedish", "Norwegian", "Finnish", "Korean", "Thai", "Estonia", "Vietnamese", "Hebrew", "Latvian", "Arabic",
"Sovenian"-Slovenian, "Croatian", "Lithuanian", "Serbian", "BrazilianPortuguese"-Brazilian Portuguese, "Indonesian", "Ukrainian", "EURSpanish", "Sovenian",
"Uzbek", "Kazak", "Kirghiz", "Farsi", "Azerbaidzhan", "Burmese", "Mongolian"-->SimChinese
ad on

</language>
<upgradeFirmWareEnabled>
<!--ro, opt, bool, whether to enable upgrading the firmware-->true
el .c

</upgradeFirmWareEnabled>
</DeviceLanguage>
ez
en

16.1.9.7 Set restoring devices' default parameters


im

Request URL
ng

PUT /ISAPI/System/factoryReset?mode=<mode>&childDevID=<devIndex>&loginPassword=<loginPassword>
Aj
Co

Query Parameter
Parameter Name Parameter Type Description
mode enum --
devIndex string --
loginPassword string --
security string --
iv string --
Request Message
None
Response Message

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, response message, attr:version{ro, req, string, protocolVersion}-->
<requestURL>
<!--ro, req, string, request URL-->null
</requestURL>
<statusCode>
<!--ro, req, enum, status code, subType:int, desc:0 (OK), 1 (OK), 2 (Device Busy), 3 (Device Error), 4 (Invalid Operation), 5 (Invalid XML Format), 6
(Invalid XML Content), 7 (Reboot Required)-->0
</statusCode>
<statusString>

m
<!--ro, req, enum, status description, subType:string, desc:“OK” (succeeded), “Device Busy”, “Device Error”, “Invalid Operation”, “Invalid XML Format”,
“Invalid XML Content”, “Reboot” (reboot device)-->OK

co
</statusString>
<subStatusCode>

a.
<!--ro, req, string, sub status code, desc:sub status code-->OK
</subStatusCode>
</ResponseStatus>

C. arc
16.1.9.8 Get the network service capability

s, em
A
Request URL

no fr
GET /ISAPI/System/Network/capabilities

ri on
Query Parameter

Ma oc
None
Request Message
up
None
co gr

Response Message
es a@

<?xml version="1.0" encoding="UTF-8"?>


Fr rc

<NetworkCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, get the network service capability, attr:version{opt, string, protocolVersion}-->
y ema

<isSupportWireless>
<!--ro, req, bool, whether the device supports wireless network-->true
</isSupportWireless>
<isSupportWired>
os fr

<!--ro, opt, bool, whether the device supports wired network-->true


</isSupportWired>
<isSupportMobileNetwork>
ad on

<!--ro, opt, bool, whether the device supports mobile network-->true


</isSupportMobileNetwork>
el .c

<isSupportWAN>
<!--ro, opt, bool, whether the device supports WAN (Wide Area Network)-->true
</isSupportWAN>
ez

<isSupportPPPoE>
<!--ro, req, bool, whether the device supports PPPoE (Point to Point Protocol over Ethernet)-->true
</isSupportPPPoE>
en

<isSupportBond>
<!--ro, req, bool, whether the device supports NIC (Network Interface Card) bonding-->true
im

</isSupportBond>
<isSupport802_1x>
ng

<!--ro, req, bool, whether the device supports 802.1x protocol-->true


Aj

</isSupport802_1x>
<isSupportNtp>
Co

<!--ro, opt, bool, whether the device supports NTP (Network Time Protocol)-->true
</isSupportNtp>
<isSupportFtp>
<!--ro, opt, bool, whether the device supports FTP (File Transfer Protocol)-->true
</isSupportFtp>
<isSupportUpnp>
<!--ro, opt, bool, whether the device supports UPnP (Universal Plug and Play) protocol-->true
</isSupportUpnp>
<isSupportPNP>
<!--ro, opt, bool, whether the device supports plug-and-play protocol-->true
</isSupportPNP>
<isSupportDdns>
<!--ro, opt, bool, whether the device supports DDNS (Dynamic Domain Name System) service-->true
</isSupportDdns>
<isSupportHttps>
<!--ro, opt, bool, whether the device supports HTTPS (Hypertext Transfer Protocol Secure)-->true
</isSupportHttps>
<isSupport28181>
<!--ro, opt, bool, N/A-->true
</isSupport28181>
<SnmpCap>
<!--ro, opt, object, SNMP (Simple Network Management Protocol) capability-->
<isSupport>
<!--ro, req, bool, whether the device supports SNMP-->true
</isSupport>
</SnmpCap>
<isSupportExtNetCfg>
<!--ro, opt, bool, whether the device supports configuring extended network parameters-->true
</isSupportExtNetCfg>
<isSupportIPFilter>
<!--ro, opt, bool, whether the device supports IP filtering-->true
</isSupportIPFilter>
<isSupportSSH>
<!--ro, opt, bool, whether the device supports SSH-->true
</isSupportSSH>
<isSupportNetPreviewStrategy>
<!--ro, opt, bool, whether the device supports network live view strategy-->true
</isSupportNetPreviewStrategy>
<isSupportEZVIZ>

m
<!--ro, opt, bool, whether the device supports EZ protocol-->true

co
</isSupportEZVIZ>
<isSupportEhome>
<!--ro, opt, bool, whether the device supports EHome (ISUP) protocol-->true

a.
</isSupportEhome>
<isSupportWirelessDial>
<!--ro, opt, bool, whether the device supports wireless dial-up protocol-->true

C. arc
</isSupportWirelessDial>
<isSupportWirelessServer>
<!--ro, opt, bool, whether the device supports wireless server-->true
</isSupportWirelessServer>

s, em
<isSupportWPS>
<!--ro, opt, bool, whether the device supports Wi-Fi Protected Setup-->true

A
</isSupportWPS>

no fr
<isWirelessMutexWithWirelessServer>
<!--ro, opt, bool, whether the device supports mutual exclusion of wireless access and wireless service-->true

ri on
</isWirelessMutexWithWirelessServer>
<isSupportMACFilter>
<!--ro, opt, bool, whether the device supports physical address filtering-->true

Ma oc
</isSupportMACFilter>
<GB28181Cap>
<!--ro, opt, object, N/A-->
up
<isSupportGB28181Service>
<!--ro, opt, bool, N/A-->true
co gr

</isSupportGB28181Service>
</GB28181Cap>
<WPS>
es a@

<!--ro, opt, object, Wi-Fi Protected Setup-->


<NetworkInterfaceList size="2">
<!--ro, opt, array, Internet API list, subType:object, attr:size{req, int}-->
Fr rc

<NetworkInterface>
<!--ro, opt, object, Internet API-->
y ema

<id>
<!--ro, req, string, NIC index-->test
</id>
<enabled>
os fr

<!--ro, req, bool, whether to enable or not-->true


</enabled>
<isSupportAutoConnect>
ad on

<!--ro, opt, bool, whether the device supports automatic connection-->true


</isSupportAutoConnect>
<isSupportDevicePinCode>
el .c

<!--ro, opt, bool, whether the device supports PIN code-->true


</isSupportDevicePinCode>
ez

<isSupportDevicePinCodeUpdate>
<!--ro, opt, bool, whether the device supports updating the PIN code-->true
</isSupportDevicePinCodeUpdate>
en

<ApPinCode>
<!--ro, opt, object, PIN code of the access point-->
<ssid min="1" max="10">
im

<!--ro, opt, string, SSID (Service Set Identifier), attr:min{req, int},max{req, int}-->test
</ssid>
ng

<pinCode min="1" max="10">


Aj

<!--ro, opt, string, PIN code, attr:min{req, int},max{req, int}-->test


Co

</pinCode>
</ApPinCode>
</NetworkInterface>
</NetworkInterfaceList>
</WPS>
<isSupportRFIDData>
<!--ro, opt, bool, whether the device supports RFID collection configuration-->true
</isSupportRFIDData>
<isSupportwifiProbeSSID>
<!--ro, opt, bool, whether the device supports configuration of Wi-Fi probe SSID-->true
</isSupportwifiProbeSSID>
<isSupportWifiProbe>
<!--ro, opt, bool, whether the device supports Wi-Fi probe-->true
</isSupportWifiProbe>
<verificationCode min="1" max="10">
<!--ro, opt, string, verification code, attr:min{req, int},max{req, int}-->test
</verificationCode>
<WPSCap>
<!--ro, opt, object, Wi-Fi Protected Setup capability-->
<isSupport>
<!--ro, req, bool, whether the device supports Wi-Fi Protected Setup-->true
</isSupport>
<isSupportAutoConnect>
<!--ro, req, bool, whether the device supports automatic connection-->true
<!--ro, req, bool, whether the device supports automatic connection-->true
</isSupportAutoConnect>
</WPSCap>
<NetWorkMode>
<!--ro, opt, object, network mode-->
<workMode>
<!--ro, opt, enum, network mode, subType:string, desc:"close", "wifi" (wireless access), "wifiAp" (wireless access point)-->close
</workMode>
</NetWorkMode>
<VerificationCodeModification>
<!--ro, opt, object, verification code editing-->
<verificationCodeType opt="normal,empty">
<!--ro, opt, string, verification code type, attr:opt{req, string}-->test
</verificationCodeType>
<isSupportDeclarationURL>
<!--ro, opt, bool, whether the device supports the hyperlink to the Terms of Service-->true

m
</isSupportDeclarationURL>
<isSupportPrivacyPolicyURL>

co
<!--ro, opt, bool, whether the device supports the hyperlink to the Privacy Policy-->true
</isSupportPrivacyPolicyURL>
<verificationCodeModify opt="true,false">

a.
<!--ro, opt, bool, whether the device verification code has been modified, attr:opt{req, string}-->true
</verificationCodeModify>

C. arc
<Hyperlinks>
<!--ro, opt, object, hyperlink-->
<declarationURL>
<!--ro, opt, string, hyperlink to the Terms of Service-->test

s, em
</declarationURL>
<privacyPolicyURL>

A
<!--ro, opt, string, hyperlink to the Privacy Policy-->test

no fr
</privacyPolicyURL>
</Hyperlinks>
<isSupportVerificationCodeCheck>

ri on
<!--ro, opt, bool, whether the device supports verifying the verification code-->true
</isSupportVerificationCodeCheck>

Ma oc
<isSupportOldVerificationCode>
<!--ro, opt, bool, whether the device supports the EZ password configuration of old version (the password of old version consists of six characters)--
>true
up
</isSupportOldVerificationCode>
</VerificationCodeModification>
<isSupportIntegrate>
co gr

<!--ro, opt, bool, whether the device supports access protocol configuration-->true
</isSupportIntegrate>
es a@

<isSupportPlatformAccess>
<!--ro, opt, bool, whether the device supports platform access-->true
</isSupportPlatformAccess>
Fr rc

<isSupportIntelligentBoost>
s

<!--ro, opt, bool, whether the device supports intelligent acceleration-->true


</isSupportIntelligentBoost>
y ema

<WifiRegionConfiguration>
<!--ro, opt, object, wifi area configuration, desc:when both are not supported, the <WifiRegionConfiguration> node will not return-->
<isSupportWifiRegion>
<!--ro, opt, bool, whether the device supports wifi area configuration, desc:supported by overseas devices; true (support), this node is not returned
os fr

(not support)-->true
</isSupportWifiRegion>
<isSupportWifiEnhancement>
ad on

<!--ro, opt, bool, whether the device supports wifi enhancement, desc:N/A-->true
</isSupportWifiEnhancement>
el .c

</WifiRegionConfiguration>
<isSupportResourceStatistics>
<!--ro, opt, bool, whether the device supports getting the network resource information-->true
ez

</isSupportResourceStatistics>
<isSupportBandwidthLimit>
<!--ro, opt, bool, whether the device supports bandwidth limit-->true
en

</isSupportBandwidthLimit>
<isSupportPOEPortsDisableAdaptiveServer>
im

<!--ro, opt, bool, whether the device supports the POE protocol-->true
</isSupportPOEPortsDisableAdaptiveServer>
ng

<isSupportPOEConfiguration>
Aj

<!--ro, opt, bool, whether the device supports configuring the POE NIC parameters-->true
</isSupportPOEConfiguration>
Co

<isSupportGetLinkSocketIP>
<!--ro, opt, bool, whether the device supports getting the SocketIP of the current link-->true
</isSupportGetLinkSocketIP>
<isSupportWebSocket>
<!--ro, opt, bool, whether the device supports WebSocket-->true
</isSupportWebSocket>
<isSupportWebSocketS>
<!--ro, opt, bool, whether the device supports WebSocketS-->true
</isSupportWebSocketS>
<Adaption>
<!--ro, opt, object, network self-adaption-->
<streamType opt="0,1,2,3,4,5,7,8,9,10">
<!--ro, opt, enum, stream type that supports network self-adaption during live view, subType:int, attr:opt{req, string}, desc:stream types that
support network self-adaption during live view: 0 (main stream), 1 (sub-stream), 2 (third stream), 3 (fourth stream / virtual stream), 4 (fifth stream), 5
(sixth stream), 7 (seventh stream), 8 (eighth stream), 9 (ninth stream), 10 (tenth stream), and so on-->0
</streamType>
<isSupportPlayback>
<!--ro, opt, bool, whether the device supports playback-->true
</isSupportPlayback>
</Adaption>
<isSupportVideoImgDB>
<!--ro, opt, bool, whether the device supports image and video library configuration-->true
</isSupportVideoImgDB>
<isSupportEventDataOverWebSocket opt="true,false">
<!--ro, opt, bool, whether the device supports uploading the event data via WebSocket, attr:opt{req, string}-->true
</isSupportEventDataOverWebSocket>
<isSupportDynamicHostName>
<!--ro, opt, bool, whether the device supports DDNS (Dynamic Domain Name System) configuration-->true
</isSupportDynamicHostName>
<isSupportTCPAcceleration>
<!--ro, opt, bool, whether the device supports TCP acceleration-->true
</isSupportTCPAcceleration>
<isSupportFlowControl>
<!--ro, opt, bool, whether the device supports traffic control-->true
</isSupportFlowControl>
<isSupportEZVIZTiming>
<!--ro, opt, bool, whether the device supports EZ platform synchronization (EZVIZ.enabledTiming in /ISAPI/System/Network/EZVIZ)-->true
</isSupportEZVIZTiming>
<isSupportTrafficMonitor>

m
<!--ro, opt, bool, whether the device supports traffic monitoring-->true

co
</isSupportTrafficMonitor>
<isSupportPingWatchdog>
<!--ro, opt, bool, whether the device supports configuring the watchdog parameters-->true

a.
</isSupportPingWatchdog>
<isSupportAutoFrequencyHop>
<!--ro, opt, bool, whether the device supports auto frequency hopping-->true

C. arc
</isSupportAutoFrequencyHop>
<isSupportTDMACfg>
<!--ro, opt, bool, whether the device supports configuring TDMA-->true
</isSupportTDMACfg>

s, em
<isSupportDynamicChannel>

A
<!--ro, opt, bool, whether the device supports dynamic channel selection-->true

no fr
</isSupportDynamicChannel>
<isSupportSIMCardSwitch>
<!--ro, opt, bool, whether the device supports configuring scheduled SIM card switch, desc:Related URI:

ri on
/ISAPI/System/Network/WirelessDial/SIMCardSwitch?format=json-->true
</isSupportSIMCardSwitch>
<isSupportDMSAuthInfo>

Ma oc
<!--ro, opt, bool, whether the device supports DMS authentication information management-->true
</isSupportDMSAuthInfo>
up
<isSupportWiredandWirelessTrafficMonitor>
<!--ro, opt, bool, whether the device supports traffic monitoring (wireless NIC and wired NIC)-->true
</isSupportWiredandWirelessTrafficMonitor>
co gr

<isSupport4G>
<!--ro, opt, bool, whether the device supports 4G module-->true
</isSupport4G>
es a@

<isSupport4GConfig>
<!--ro, opt, bool, whether the device supports 4G configuration-->true
</isSupport4GConfig>
Fr rc

<isSupportGRIDServer>
<!--ro, opt, bool, N/A-->true
y ema

</isSupportGRIDServer>
<isSupportGRIDInfo>
<!--ro, opt, bool, N/A-->true
</isSupportGRIDInfo>
os fr

<isSupportSipTransmit>
<!--ro, opt, bool, whether the device supports configuring SIP transmission parameters-->true
</isSupportSipTransmit>
ad on

<isSupportSip>
<!--ro, opt, bool, whether the device supports private SIP (VOIP)-->true
</isSupportSip>
el .c

<isSupportWifiCascade>
<!--ro, opt, bool, whether the device supports enabling automatic Wi-Fi cascading-->true
ez

</isSupportWifiCascade>
<isSupportRelativeInfo>
<!--ro, opt, bool, whether the device supports getting the information about the connected devices-->true
en

</isSupportRelativeInfo>
<isSupportANR>
<!--ro, opt, bool, whether the device supports automatic network replenishment, desc:Related URI: /ISAPI/System/Network/ANR-->true
im

</isSupportANR>
ng

<isSupportEmailEncrypt>
Aj

<!--ro, opt, bool, whether the device supports email encryption configuration-->true
</isSupportEmailEncrypt>
Co

<isSupportPortFilter>
<!--ro, opt, bool, whether the device supports port filtering-->true
</isSupportPortFilter>
<isSupportPingDeny>
<!--ro, opt, bool, whether the device supports configuring parameters to prevent the device from being tested using ping command-->true
</isSupportPingDeny>
<isSupportDOSDeny>
<!--ro, opt, bool, whether the device supports configuring parameters to prevent the DoS attack-->true
</isSupportDOSDeny>
<isSupportNetworkStatus>
<!--ro, opt, bool, whether the device supports searching for the network status-->true
</isSupportNetworkStatus>
<isSupportEZVIZQRcode>
<!--ro, opt, bool, whether the device supports getting the EZ QR code, desc:Related URI: /ISAPI/System/Network/EZVIZ/QRCode?format=json-->true
</isSupportEZVIZQRcode>
<isSupportEZVIZUnbind>
<!--ro, opt, bool, whether the device supports unbinding from EZ, desc:/ISAPI/System/Network/EZVIZ/unbind?format=json-->true
</isSupportEZVIZUnbind>
<isSupportPingTest>
<!--ro, opt, bool, whether the device supports ping test, desc:Related URI: /ISAPI/System/Network/pingtest/capabilities-->true
</isSupportPingTest>
<isSupportMOTCloudPlateform>
<!--ro, opt, bool, whether the device supports configuring parameters for accessing the cloud platform service, desc:Related URI:
/ISAPI/System/Network/Traffic/MOTCloudPlateform/capabilities?format=json-->true
/ISAPI/System/Network/Traffic/MOTCloudPlateform/capabilities?format=json-->true
</isSupportMOTCloudPlateform>
<isSupportSpectrumScan>
<!--ro, opt, bool, whether the device supports frequency spectrum scanning, desc:Related URI:
/ISAPI/System/Network/interface/<netCardID>/spectrumScan/capabilities?format=json-->true
</isSupportSpectrumScan>
<isSupportFRP>
<!--ro, opt, bool, whether the device supports FRP (Fast Reverse Proxy), desc:Related URI: /ISAPI/Syetem/Network/FRP?format=json-->true
</isSupportFRP>
<isSupport5GModule>
<!--ro, opt, bool, whether the device supports 5G module configuration, desc:Related URI: /ISAPI/System/Network/5GModule/capabilities?format=json-->true
</isSupport5GModule>
<isSupportWirelessDialRoute>
<!--ro, opt, bool, whether the device supports configuring parameters of route forwarding rules of wireless dial-up, desc:Related URI:
/ISAPI/System/Network/WirelessDia/route/capabilities?format=json-->true
</isSupportWirelessDialRoute>

m
<isSupportNPlusOne>
<!--ro, opt, bool, whether the device supports N+1 protocol-->true

co
</isSupportNPlusOne>
<supportEnvironmentalStandards opt="HJ212">

a.
<!--ro, opt, string, environmental monitoring standard, attr:opt{req, string}, desc:N/A-->true
</supportEnvironmentalStandards>
<isSupportIntranetSegment>

C. arc
<!--ro, opt, bool, whether the device supports LAN segment configuration, desc:if this function is supported, this node will be returned and its value
is true; otherwise, this node will be returned and its value is false or not be returned. Related URI: /ISAPI/System/Network/intranetSegment/capabilities?
format=json-->true
</isSupportIntranetSegment>

s, em
<isSupportDHCPServer>
<!--ro, opt, bool, whether the device supports DHCP service configuration, desc:if this function is supported, this node will be returned and its value

A
is true; otherwise, this node will be returned and its value is false or not be returned. Related URI: /ISAPI/System/Network/DHCPServer/capabilities?

no fr
format=json-->true
</isSupportDHCPServer>

ri on
<isSupportClusterIntercom>
<!--ro, opt, bool, whether the 7200 intercom protocol is transmitted, desc:if this function is supported, this node will be returned and its value is
true; otherwise, this node will be returned and its value is false or not be returned. Related URI: /ISAPI/System/Network/clusterIntercom/capabilities?

Ma oc
format=json-->true
</isSupportClusterIntercom>
<isSupportHydrologicMonitoring>
up
<!--ro, opt, bool, whether the device supports hydrologic monitoring data communication, desc:if this function is supported, this node will be returned
and its value is true; otherwise, this node will be returned and its value is false or not be returned. Related URI:
/ISAPI/System/Network/HydrologicMonitoring/capabilities?format=json-->true
co gr

</isSupportHydrologicMonitoring>
<isSupportGantryETCServer>
es a@

<!--ro, opt, bool, N/A, desc:N/A-->true


</isSupportGantryETCServer>
<RoutePolicy>
Fr rc

<!--ro, opt, object, policy routing-->


<isSupportRoutePolicy>
<!--ro, opt, bool, whether the device supports configuring the policy routing parameters-->true
y ema

</isSupportRoutePolicy>
<isRebootHint>
<!--ro, opt, bool, whether to alarm to reboot after configuration-->true
</isRebootHint>
os fr

</RoutePolicy>
<isWirelessDialMutexWithWlanAndWifi>
ad on

<!--ro, opt, bool, whether the wireless dial-up is mutually exclusive with the WLAN hotspot and Wi-Fi-->true
</isWirelessDialMutexWithWlanAndWifi>
<isSupportDMZCfg>
el .c

<!--ro, opt, bool, whether the device supports configuring DMZ host, desc:Related URI: /ISAPI/System/Network/DMZCfg/capabilities?format=json-->true
</isSupportDMZCfg>
<isSupportSpeechTranscription>
ez

<!--ro, opt, bool, whether the device supports accessing the speech-to-text transcription platform, desc:if this function is supported, this node will
be returned and its value is true; otherwise, this node will be returned and its value is false or not be returned. Related URI:
en

/ISAPI/System/Network/speechTranscriptionPlatform/capabilities?format=json-->true
</isSupportSpeechTranscription>
<isSupportAsynPingTest>
im

<!--ro, opt, bool, whether the device supports asynchronous network detection, desc:network detection means testing the network stability and packet
loss rate of the network using the ping command for knowing about the network condition. Related URI: /ISAPI/System/Network/asynPingTest/capabilities?
ng

format=json-->true
Aj

</isSupportAsynPingTest>
<isSupportBasebandCapture>
Co

<!--ro, opt, bool, whether the device supports capturing packets of the baseband, desc:you can capture packets transmitted between the 4G module and the
base station using the ping command. Related URI: /ISAPI/System/Network/cellularNetwork/basebandCapture/capabilities?format=json-->true
</isSupportBasebandCapture>
<isSupportCellularNetworkSpeedTest>
<!--ro, opt, bool, whether the device supports testing the connection speed between the device and the cellular network, desc:you can test the
connection speed of the network where the current device is. Related URI: /ISAPI/System/Network/cellularNetwork/speedTest/capabilities?format=json-->true
</isSupportCellularNetworkSpeedTest>
<isSupportCellularNetworkCellInfo>
<!--ro, opt, bool, whether the device supports getting a cell's information of the cellular network, desc:you can get the information of the cellular
network where the device is. Related URI: /ISAPI/System/Network/cellularNetwork/cellInfo?format=json&ecurity=<security>&iv=<iv>-->true
</isSupportCellularNetworkCellInfo>
<isSupportMultiBandFrequencyScanning>
<!--ro, opt, bool, whether the device supports scanning all frequency bands of the cellular network, desc:Related URI:
/ISAPI/System/Network/cellularNetwork/multiBandFrequencyScanning/capabilities?format=json-->true
</isSupportMultiBandFrequencyScanning>
<isSupportCellularNetworkLockBand>
<!--ro, opt, bool, whether the device supports accessing the locked frequency band of the cellular network, desc:Related URI:
/ISAPI/System/Network/cellularNetwork/lockBand/capabilities?format=json-->true
</isSupportCellularNetworkLockBand>
<isSupportRadioFrequencyFluctuation>
<!--ro, opt, bool, whether the device supports configuring RF parameters of the cellular network, desc:Related URI:
/ISAPI/System/Network/cellularNetwork/radioFrequencyFluctuation/capabilities?format=json-->true
</isSupportRadioFrequencyFluctuation>
</isSupportRadioFrequencyFluctuation>
<isSupportBasebandBlock>
<!--ro, opt, bool, whether the device supports the unauthorized list of the base station, desc:Related URI:
/ISAPI/System/Network/cellularNetwork/basebandBlock/capabilities?format=json-->true
</isSupportBasebandBlock>
<isSupportWifiQuality>
<!--ro, opt, bool, whether the device supports getting the device's Wi-Fi quality information, desc:Related URI: /ISAPI/System/Network/wifiQuality?
format=json-->true
</isSupportWifiQuality>
<isSupportWiredNetworkQuality>
<!--ro, opt, bool, whether the device supports getting the wired network quality information, desc:Related URI:
/ISAPI/System/Network/wiredNetworkQuality?format=json-->true
</isSupportWiredNetworkQuality>
<isSupportQoSBehaviorCfg>
<!--ro, opt, bool, whether the device supports configuring QoS traffic behavior, desc:Related URI: /ISAPI/System/Network/qos/BehaviorCfg/capabilities?
format=json-->true
</isSupportQoSBehaviorCfg>

m
<isSupportQoSClassifierCfg>

co
<!--ro, opt, bool, whether the device supports configuring QoS traffic types, desc:Related URI: /ISAPI/System/Network/qos/ClassifierCfg/capabilities?
format=json-->true
</isSupportQoSClassifierCfg>

a.
<isSupportQoSPolicyCfg>
<!--ro, opt, bool, whether the device supports configuring QoS policy, desc:Related URI: /ISAPI/System/Network/qos/PolicyCfg/capabilities?format=json--
>true

C. arc
</isSupportQoSPolicyCfg>
<isSupportQoSPolicyVLANCfg>
<!--ro, opt, bool, whether the device supports configuring QoS policy VLAN, desc:Related URI: /ISAPI/System/Network/qos/PolicyVLANCfg/capabilities?
format=json-->true

s, em
</isSupportQoSPolicyVLANCfg>

A
<isSupportQoSPortRateLimiting>

no fr
<!--ro, opt, bool, whether the device supports configuring port speed limit, desc:Related URI: /ISAPI/System/Network/qos/portRateLimiting/capabilities?
format=json-->true
</isSupportQoSPortRateLimiting>

ri on
<isSupportQoSQueueAlgorithmCfg>
<!--ro, opt, bool, whether the device supports configuring QoS queue algorithm, desc:Related URI:
/ISAPI/System/Network/qos/queueAlgorithmCfg/capabilities?format=json-->true

Ma oc
</isSupportQoSQueueAlgorithmCfg>
<isSupportQoSPortPriorityCfg>
up
<!--ro, opt, bool, whether the device supports QoS port priority configuration, desc:Related URI:
/ISAPI/System/Network/qos/portPriorityCfg/capabilities?format=json-->true
</isSupportQoSPortPriorityCfg>
co gr

<isSupportQoS802.1pPriorityMapping>
<!--ro, opt, bool, whether the device supports DSCP and 802.1p mapping priority configuration, desc:Related URI:
/ISAPI/System/Network/qos/802.1pPriorityMapping/capabilities?format=json-->true
es a@

</isSupportQoS802.1pPriorityMapping>
<isSupportQoSDSCPPriorityMapping>
Fr rc

<!--ro, opt, bool, whether the device supports DSCP mapping priority configuration, desc:Related URI:
s

/ISAPI/System/Network/qos/DSCPPriorityMapping/capabilities?format=json-->true
</isSupportQoSDSCPPriorityMapping>
y ema

<isSupportQoSLoaclPriorityMapping>
<!--ro, opt, bool, whether the device supports 802.1p and local mapping priority configuration, desc:Related URI:
/ISAPI/System/Network/qos/loaclPriorityMapping/capabilities?format=json-->true
</isSupportQoSLoaclPriorityMapping>
os fr

<isSupportStopPingtest>
<!--ro, opt, bool, whether to stop PingTest, desc:Related URI: /ISAPI/System/Network/StopPingtest?format=json-->true
</isSupportStopPingtest>
ad on

<isSupportSNMPView>
<!--ro, opt, bool, whether the device supports SNMP view, desc:Related URI: /ISAPI/System/Network/SNMP/ViewCfg/capabilities?format=json-->true
</isSupportSNMPView>
el .c

<isSupportSNMPUserGroup>
<!--ro, opt, bool, whether the device supports SNMP user groups, desc:Related URI: /ISAPI/System/Network/SNMP/UserGroup/capabilities?format=json-->true
ez

</isSupportSNMPUserGroup>
<isSupportSNMPBasicInfo>
<!--ro, opt, bool, whether the device supports the basic information of SNMP, desc:Related URI: /ISAPI/System/Network/SNMP/BasicInfo/capabilities?
en

format=json-->true
</isSupportSNMPBasicInfo>
<isSupportRFIDTagCheckTest>
im

<!--ro, opt, bool, whether the device supports the RFID tag disk storage performance test, desc:Related URI:
ng

/ISAPI/System/Network/RFIDData/GetTagCheckTestInfo?format=json-->true
Aj

</isSupportRFIDTagCheckTest>
<isSupportQoSDSCPtoLoaclPriorityMapping>
Co

<!--ro, opt, bool, whether the device supports DSCP and local mapping priority configuration, desc:Related URI:
/ISAPI/System/Network/qos/DSCPtoLoaclPriorityMapping/capabilities?format=json-->true
</isSupportQoSDSCPtoLoaclPriorityMapping>
<isSupportQoS802.1pto802.1pPriorityMapping>
<!--ro, opt, bool, whether the device supports 802.1p mapping priority configuration, desc:Related URI:
/ISAPI/System/Network/qos/802.1pto802.1pPriorityMapping/capabilities?format=json-->true
</isSupportQoS802.1pto802.1pPriorityMapping>
<isSupportNFCAllowList>
<!--ro, opt, bool, whether the device supports NFC network allowlist management, desc:Related URI: /ISAPI/System/Network/NFC/allowList/capabilities?
format=json-->true
</isSupportNFCAllowList>
<isSupportLinkTestStart>
<!--ro, opt, bool, whether the device supports enabling network link test, desc:Related URI:
/ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/LinkTest/Start?format=json-->true
</isSupportLinkTestStart>
<isSupportLinkTestResult>
<!--ro, opt, bool, whether the device supports getting the result of network link test, desc:Related URI:
/ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/LinkTest/Result?format=json-->true
</isSupportLinkTestResult>
<isSupportGetAsynTestEmailResult>
<!--ro, opt, bool, whether the device supports getting email testing result asynchronously, desc:POST
/ISAPI/System/Network/Email/GetAsynTestEmailResult?format=json-->true
</isSupportGetAsynTestEmailResult>
<isSupportTestAsynEmail>
<isSupportTestAsynEmail>
<!--ro, opt, bool, whether the device supports asynchronously testing email, desc:POST /ISAPI/System/Network/Email/TestAsynEmail?format=json-->true
</isSupportTestAsynEmail>
<isSupportModbusAccess>
<!--ro, opt, bool, whether the device supports Modbus accessing parameters, desc:GET/PUT /ISAPI/System/Network/ModbusAccess?format=json-->true
</isSupportModbusAccess>
<isSupportNetworkModuleUpgrade>
<!--ro, opt, bool, whether the device supports upgrading network module, desc:including importing upgrade package
(/ISAPI/System/Network/WirelessDial/ImportUpgradePackage?format=json), getting importing progress
(/ISAPI/System/Network/WirelessDial/GetUpgradePackageImportStatus?format=json), starting upgrading
(/ISAPI/System/Network/WirelessDial/StartUpgradeNetworkModule?format=json), get upgrade status
(/ISAPI/System/Network/WirelessDial/GetUpgradeNetworkModuleStatus?format=json)-->true
</isSupportNetworkModuleUpgrade>
<isSupportNetworkModuleVersionInfo>
<!--ro, opt, bool, whether the device supports getting the version information of network module, desc:GET
/ISAPI/System/Network/WirelessDial/NetworkModuleVersionInfo?format=json-->true

m
</isSupportNetworkModuleVersionInfo>
<isSupportGreenShieldPlatform>

co
<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/System/Network/GreenShieldPlatform/GreenShieldPlatform?format=json-->true
</isSupportGreenShieldPlatform>

a.
<isSupportFusionUniversalApplicationPlatCfg>
<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/System/Network/FusionUniversalApplicationPlatform/FusionUniversalApplicationPlatCfg?format=json-->true
</isSupportFusionUniversalApplicationPlatCfg>

C. arc
<isSupportNPQControlStrategy>
<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/System/Network/NPQMgr/NPQControlStrategy?format=json-->true
</isSupportNPQControlStrategy>
<isSupportNAT>

s, em
<!--ro, opt, bool, whether NAT is supported, desc:GET/PUT /ISAPI/System/Network/nats-->true
</isSupportNAT>

A
<isSupportGetCurrentlyUsingNetworkCardInfo>

no fr
<!--ro, opt, bool, whether the device supports getting the current NIC information, desc:GET
/ISAPI/System/Network/WirelessDial/GetCurrentlyUsingNetworkCardInfo?format=json-->true

ri on
</isSupportGetCurrentlyUsingNetworkCardInfo>
<isSupportAutoRecampParams>
<!--ro, opt, bool, whether the device supports parameters of auto re-camping on a regular basis, desc:GET/PUT

Ma oc
/ISAPI/System/Network/WirelessDial/AutoRecampParams?format=json-->true
</isSupportAutoRecampParams>
<isSupportDSTPServerCfg>
up
<!--ro, opt, bool, whether the device supports DTSP server address configuration, desc:GET/PUT /ISAPI/System/Network/DSTPAccess/DSTPServerCfg?
format=json-->true
co gr

</isSupportDSTPServerCfg>
<isSupportJTT1008ServerParams>
<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/System/Network/JTT1008Access/JTT1008ServerParams?format=json-->true
es a@

</isSupportJTT1008ServerParams>
<isSupportImportNARIKeyFile>
<!--ro, opt, bool, N/A, desc:PUT /ISAPI/System/Network/NARIEncryptionKeyMgr/ImportNARIKeyFile?format=json-->true
Fr rc

</isSupportImportNARIKeyFile>
<isSupportExportNARIKeyFile>
<!--ro, opt, bool, N/A, desc:GET /ISAPI/System/Network/NARIEncryptionKeyMgr/ExportNARIKeyFile?format=json-->true
y ema

</isSupportExportNARIKeyFile>
<isSupportNARIEncryptionParams>
<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/System/Network/NARIEncryptionKeyMgr/NARIEncryptionParams?format=json-->true
</isSupportNARIEncryptionParams>
os fr

<isSupportDSTPProtocolsCap>
<!--ro, opt, bool, whether the device supports DTSP capability, desc:GET /ISAPI/System/Network/DSTPAccess/DSTPProtocolsCap?format=json-->true
ad on

</isSupportDSTPProtocolsCap>
<isSupportIPAdaptiveParams>
<!--ro, opt, bool, whether the device supports self-adaptive IP address parameters, desc:GET/PUT /ISAPI/System/Network/IPAdaptiveParams?format=json--
el .c

>true
</isSupportIPAdaptiveParams>
<isSupportPowerCenterPlatform>
ez

<!--ro, opt, bool, N/A, desc:GET/PUT /ISAPI/System/Network/PowerCenterAccess/PowerCenterPlatform?format=json-->true


</isSupportPowerCenterPlatform>
en

<isSupportTestPowerCenterPlatformConnect>
<!--ro, opt, bool, N/A, desc:POST /ISAPI/System/Network/PowerCenterAccess/TestPowerCenterPlatformConnect?format=json-->true
</isSupportTestPowerCenterPlatformConnect>
im

<isSupportModbusTestSubordinateStatus>
<!--ro, opt, bool, whether the device supports Modbus testing the status of the specified client., desc:POST
ng

/ISAPI/System/Network/ModbusTestSubordinateStatus?format=json-->true
Aj

</isSupportModbusTestSubordinateStatus>
Co

<isSupportGetModbusAndRegisterMap>
<!--ro, opt, bool, whether the device supports get Modbus uploaded content and the mapping relation between the uploaded content and register quantity,
desc:GET /ISAPI/System/Network/GetModbusAndRegisterMap?format=json-->true
</isSupportGetModbusAndRegisterMap>
<isSupportAddFRPDynamicAllocationMapPort>
<!--ro, opt, bool-->true
</isSupportAddFRPDynamicAllocationMapPort>
<isSupportGetFRPDynamicAllocationMapPort>
<!--ro, opt, bool-->true
</isSupportGetFRPDynamicAllocationMapPort>
<isSupportUSBNetworkCard>
<!--ro, opt, bool-->true
</isSupportUSBNetworkCard>
<isSupportOptimumOperatorParams>
<!--ro, opt, bool-->true
</isSupportOptimumOperatorParams>
<isSupportERTCJoin>
<!--ro, opt, bool-->true
</isSupportERTCJoin>
<isSupportERTCQuit>
<!--ro, opt, bool-->true
</isSupportERTCQuit>
<isSupportLoRaCommunicationParams>
<!--ro, opt, bool-->true
<!--ro, opt, bool-->true
</isSupportLoRaCommunicationParams>
</NetworkCap>

16.1.9.9 Set SSH parameters


Request URL
PUT /ISAPI/System/Network/ssh?readerID=<readerID>
Query Parameter
Parameter Name Parameter Type Description

m
co
readerID string --

a.
Request Message

C. arc
<?xml version="1.0" encoding="UTF-8"?>

<SSH xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">

s, em
<!--wo, opt, object, attr:version{opt, string, protocolVersion}-->
<enabled>

A
<!--wo, req, bool, whether to enable the function-->true

no fr
</enabled>
<port>

ri on
<!--wo, opt, int-->22
</port>
</SSH>

Ma oc
up
Response Message
co gr

<?xml version="1.0" encoding="UTF-8"?>


es a@

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, response message, attr:version{ro, req, string, protocolVersion}-->
<requestURL>
Fr rc

<!--ro, req, string, request URL-->null


</requestURL>
<statusCode>
y ema

<!--ro, req, enum, status code, subType:int, desc:0 (OK), 1 (OK), 2 (Device Busy), 3 (Device Error), 4 (Invalid Operation), 5 (Invalid XML Format), 6
(Invalid XML Content), 7 (Reboot Required)-->0
</statusCode>
<statusString>
os fr

<!--ro, req, enum, read-only,status description: OK,Device Busy,Device Error,Invalid Operation,Invalid XML Format,Invalid XML Content,Reboot,Additional
Error, subType:string, desc:"OK" (succeeded), "Device Busy", "Device Error", "Invalid Operation", "Invalid XML Format", "Invalid XML Content", "Reboot"
ad on

(reboot device)-->OK
</statusString>
<subStatusCode>
el .c

<!--ro, req, string, sub status code, which describes the error in details, desc:sub status code, which describes the error in details-->OK
</subStatusCode>
</ResponseStatus>
ez
en

16.1.9.10 Reboot device


im

Request URL
ng
Aj

PUT /ISAPI/System/reboot?childDevID=<devIndex>&module=<module>
Co

Query Parameter
Parameter Name Parameter Type Description
devIndex string --
module string --
Request Message
None
Response Message
<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


<!--ro, req, object, response message, attr:version{ro, req, string, protocolVersion}-->
<requestURL>
<!--ro, req, string, request URL-->null
</requestURL>
<statusCode>
<!--ro, req, enum, status code, subType:int, desc:0 (OK), 1 (OK), 2 (Device Busy), 3 (Device Error), 4 (Invalid Operation), 5 (Invalid XML Format), 6
(Invalid XML Content), 7 (Reboot Required)-->0
</statusCode>
<statusString>
<!--ro, req, enum, status description, subType:string, desc:“OK” (succeeded), “Device Busy”, “Device Error”, “Invalid Operation”, “Invalid XML Format”,
“Invalid XML Content”, “Reboot” (reboot device)-->OK

m
</statusString>
<subStatusCode>

co
<!--ro, req, string, sub status code, desc:sub status code-->OK
</subStatusCode>
</ResponseStatus>

a.
C. arc
16.1.9.11 Get the video analysis task capability
Request URL

s, em
A
GET /ISAPI/System/Video/capabilities

no fr
Query Parameter

ri on
None

Ma oc
Request Message
None
up
Response Message
co gr

<?xml version="1.0" encoding="UTF-8"?>


es a@

<VideoCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">


Fr rc

<!--ro, req, object, attr:version{req, string, protocolVersion}-->


s

<videoInputPortNums>
<!--ro, opt, int, number of video input ports-->0
y ema

</videoInputPortNums>
<videoOutputPortNums>
<!--ro, opt, int, number of video output ports-->0
</videoOutputPortNums>
os fr

<menuNums>
<!--ro, opt, int, number of local menus that can be displayed-->0
</menuNums>
ad on

<externalChannelNum>
<!--ro, opt, bool, number of extended analog channels-->true
</externalChannelNum>
el .c

<isSupportHeatmap>
<!--ro, opt, bool, whether the device supports heat map-->true
ez

</isSupportHeatmap>
<isSupportCounting>
<!--ro, opt, bool, whether the device supports people counting-->true
en

</isSupportCounting>
<countingType>
<!--ro, opt, enum, statistics type, subType:string, desc:statistics type-->human
im

</countingType>
ng

<isSupportPicture>
Aj

<!--ro, opt, bool, whether the device supports OSD picture overlay, desc:related URI: /ISAPI/System/Video/inputs/channels/<channelID>/image/picture--
>true
Co

</isSupportPicture>
<isSupportPreviewSwitch>
<!--ro, opt, bool, whether the device supports switching live view-->true
</isSupportPreviewSwitch>
<isSupportRecodStatus>
<!--ro, opt, bool, whether the device supports searching for the recording status-->true
</isSupportRecodStatus>
<isSupportPrivacyMask>
<!--ro, opt, bool, whether the device supports privacy mask-->true
</isSupportPrivacyMask>
<isSupportBinocularPreviewSwitch>
<!--ro, opt, bool, whether the device supports switching live view of the dual-lens camera-->true
</isSupportBinocularPreviewSwitch>
<isSupportCalibCheck>
<!--ro, opt, bool, whether the device supports calibration verification-->true
</isSupportCalibCheck>
<isSupportPIP>
<!--ro, opt, bool-->true
</isSupportPIP>
<isSupportFocusVideoMode>
<!--ro, opt, bool-->true
</isSupportFocusVideoMode>
<isSupportExternalChannel>
<!--ro, opt, bool, whether the device supports extended analog channels-->true
<!--ro, opt, bool, whether the device supports extended analog channels-->true
</isSupportExternalChannel>
<isSupportMultiChannelCounting>
<!--ro, opt, bool-->true
</isSupportMultiChannelCounting>
<isSupportCountingCollection>
<!--ro, opt, bool, whether the device supports people counting ANR-->true
</isSupportCountingCollection>
<isSupportHeatmapCollection>
<!--ro, opt, bool, whether the device supports heat map data ANR-->true
</isSupportHeatmapCollection>
<channelFlexible opt="name,enable,online,linknum">
<!--ro, opt, enum, subType:string, attr:opt{req, string}-->name
</channelFlexible>
<isSupportOutputsResource>
<!--ro, opt, bool, related URI: /ISAPI/System/Video/outputs/resource?format=json, desc:related URI: /ISAPI/System/Video/outputs/resource?format=json--

m
>true
</isSupportOutputsResource>

co
<OSDLanguage opt="GBK,EUC-KR,Hebrew" def="GBK">
<!--ro, opt, enum, subType:string, attr:opt{req, string},def{req, string}-->GBK

a.
</OSDLanguage>
<isSupportMixedChannel>
<!--ro, opt, bool-->true

C. arc
</isSupportMixedChannel>
<isSupportMixedChannelStatus>
<!--ro, opt, bool-->true
</isSupportMixedChannelStatus>

s, em
<isSupportOutputCourseware>
<!--ro, opt, bool, related URI: /ISAPI/System/Video/outputs/courseware/capabilities?format=json, desc:related URI:

A
/ISAPI/System/Video/outputs/courseware/capabilities?format=json-->true

no fr
</isSupportOutputCourseware>
<isSupportVideoInputMode>

ri on
<!--ro, opt, bool, related URI: /ISAPI/System/Video/inputs/mode/capabilities, desc:related URI: /ISAPI/System/Video/inputs/mode/capabilities-->true
</isSupportVideoInputMode>
<isSupportVideoOutputMode>

Ma oc
<!--ro, opt, bool, related URI: /ISAPI/System/Video/outputs/mode/capabilities?format=json, desc:related URI:
/ISAPI/