Revision Log
Version (Software Ver.-Document Ver.) | Changelog | Date |
---|---|---|
2.2 | Initial draft. | 2019-03-18 |
2.2-1 | Added personnel rules section. | 2019-03-12 |
2.2-2 | Added common interface calls example flows. | 2019-03-27 |
2.2-3 | Modified interface descriptions: Add personnel rule, upload administrator image, add/edit personnel, add/edit device administrators | 2019-04-11 |
2.2.7-1 | Added interface: Delete personnel associated with specified rules, delete personnel associated with expired rules. | 2019-04-22 |
2.3-1 | Added interface: Import standby image (2.3.15), import standby video (2.3.16), import MP3 format prompt files (2.3.17). Modified interface: Upload administrator/personnel image request parameters (2.1.3), add personnel (2.2.7), edit personnel (2.2.8). Added feature: WebSocket-based identification record upload, Section 4. | 2019-05-28 |
2.6-1 | Added interface: Import single standby image (2.3.18), import standby video 2.3.19. Changed interface name: 2.3.15 “Import standby image” is changed to “Import standby image ZIP file”, 2.3.16 “Import standby video” is changed to “Import standby video ZIP file” | 2019-10-28 |
2.6-2 | 1. Added common use case descriptions 2. Removed interface: “Import standby image ZIP file”, “Import standby video ZIP file”. | 2020-01 |
2.6-3 | Added interface: Comparison trigger mode, trigger comparison, image-taking, screen brightness | 2020-03-30 |
2.6-4 | Modified interface: 1. Added Base64 image field in Trigger comparison response body, 2. Added timeout field in Comparison trigger mode request body. | 2020-04-02 |
2.6-5 | Added interface: Push identification record (http) Modified interface: Push identification record (WebSocket) | 2020-09-08 |
2.6-6 | Added interface for batch operations (batch personnel import) | 2020-12-18 |
2.6-7 | Appended date fields in Identification rules, modified request bodies, appended notes | 2021-05-13 |
The Webserver service is included with devices with firmware version 2.2 or later, allowing remote access and management of devices through PC or mobile devices. This document will introduce common use case scenarios using the Webserver and details the available Rest API interfaces.
Term | Descrpition |
---|---|
Device/Terminal | Facial recognition product. |
Cloud management platform | Managed cloud service for backend management of devices. |
Single host mode | One of two available operation modes: not configured to the Cloud management platform, while being able to connect to the Internet. |
Cloud service mode | One of two available operation modes: Registered with the Cloud management platform |
Device administrator | Device administrator, able to access device settings after face/password verification. Each device can support up to 10 administrators. |
Third-party service | Applications/services by third-party developers interfacing with the devices. |
Terminals have 2 operating modes: Single host mode and Cloud service mod. To retrieve this information, please see 3.5.1Retrieve Device Mode. (Please review this section first before attempting to call the devices’ API.) Interface access differs with device operation mode, with differences listed below:
Single host mode | Cloud service mode | |
---|---|---|
Interface authorization | √ | √ |
Rule management | √ | |
Personnel management | √ | |
Data management | √ | |
Device management | √ | √ |
Note: If the device is set to Cloud service mode, please refer to “Facial Recognition Cloud Management Platform API Documentation “.
The following details are required for additional development using the Webserver's Rest API interface
Device Address
The IP address and port number of the device, the default port being 8080. In this document, an example address of 192.168.1.1 will be used as the device IP.
Note: the device can be configured to use http or https. Please refer to “Facial Recognition Product Manual”.
Device Administrator Password
A 4-digit password for accessing the device administrator page.
Note: In Single host mode, the device administrator and password are set the point of device activation. For more details, please refer to “Facial Recognition Product Manual”. In Cloud service mode, the device administrator and password are set in the Cloud management platform and pushed to the device. For more details, please refer to “Facial Recognition Product Manual”.
Interface Authorization
The interface authorization interface must be called first before attempting to access the other interfaces. The administrator password will be a important important parameter in authorization. Please refer to 3.1 Interface Authorization.
Note: The following content is described in single-host mode, using the interfaces in this document.
The following possible key use cases, between the device and third-party applications, are described:
Third-party application device login
Third-party application dispatch personnel details to device
Third-party application editing of personnel details
Third-party application retrieval of access records, via one of two options:
a) Retrieval from device
b) Automatic push from device to application
Third-party application retrieval of personnel count
All third-party applications attempting to access the device’s Rest API will first need to gain login authorization with the terminal.
Please refer to 3.1 Interface Authorization
1 ) Prerequisite: The third-party service is authorized to log into the terminal. Please refer to 2.1 Third-party application device login
2 ) Determine if a new identification rule is being created or to add personnel to an existing rule
a) If creating a new identification rule, add identification rule and retrieve its ID. Please refer to: 3.2.2 Add recognition rule
b) If using an existing identification rule, retrieve the rule and its ID. Please refer to 3.2.3 Retrieve identification rule list
3 ) Upload personnel image and retrieve storage path. Please refer to 3.3.7 Upload personnel image
4 ) Add personnel details, using personnel rule ID and image storage path. Please refer to 3.3.8 Add personnel
5 ) Further reading: Third-party application device logout.
Prerequisite: The third-party service is authorized to log into the terminal. Please refer to 2.1 Third-party application device login
Using personnel no. to retrieve their details and their personnel ID.
Using Personnel No. and ID to edit the specific personnel’s details.
Please refer to 3.3.10 Retrieve personnel details
Interface | Retrieve Personnel List |
---|---|
Address | /api/persons |
Request Method | GET |
Description | Retrieve personnel list, with pagination. Not supported in versions 2.3 and earlier. |
Request Parameters | Required parameters: size (Items per page), page (page number) |
Sample Request | http://192.168.1.1:8080/api/persons?size=1&page=0 |
Sample Response | { "timestamp": 1579496434244, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "content": [ { "id": 1, "name": "jbdbbjdj jjj ", "imagePath": "/api/person/image/Jhh0001.jpeg", "no": "Jhh0001" } ], "totalElements": 1, "totalPages": 1, "first": true, "last": true, "page": 0, "size": 1 } } |
Response Parameters
Param. Name | Type | Required | Length | Descrip. |
---|---|---|---|---|
entity.totalElements | Long | Y | 20 | Total |
entity.totalPages | Integer | Y | 10 | Total pages |
entity.first | Boolean | Y | 10 | Is first page |
entity.last | Boolean | Y | 10 | Is last page |
entity.size | Long | Y | 20 | Current item count |
entity.page | Int | Y | 10 | Current page (Starts from 0, 0 indicates first page) |
entity.content[i].id | String | Y | 32 | Personnel ID |
entity.content[i].name | String | Y | 64 | Personnel name |
entity.content[i].no | String | Y | 64 | Personnel No. |
entity.content[i].imagePath | String | Y | - | Personnel image path |
Interface | Retrieve Personnel List |
---|---|
Address | /api/persons |
Request Method | GET |
Description | Retrieve personnel list, with pagination. Not supported in versions 2.3 and earlier. |
Request Parameters | Required parameters: size (Items per page), page (page number) |
Sample Request | http://192.168.1.1:8080/api/persons?size=1&page=0 |
Sample Response | { "timestamp": 1579496434244, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "content": [ { "id": 1, "name": "jbdbbjdj jjj ", "imagePath": "/api/person/image/Jhh0001.jpeg", "no": "Jhh0001" } ], "totalElements": 1, "totalPages": 1, "first": true, "last": true, "page": 0, "size": 1 } } |
Response Parameters
Param. Name | Type | Required | Length | Descrip. |
---|---|---|---|---|
entity.totalElements | Long | Y | 20 | Total |
entity.totalPages | Integer | Y | 10 | Total pages |
entity.first | Boolean | Y | 10 | Is first page |
entity.last | Boolean | Y | 10 | Is last page |
entity.size | Long | Y | 20 | Current item count |
entity.page | Int | Y | 10 | Current page (Starts from 0, 0 indicates first page) |
entity.content[i].id | String | Y | 32 | Personnel ID |
entity.content[i].name | String | Y | 64 | Personnel name |
entity.content[i].no | String | Y | 64 | Personnel No. |
entity.content[i].imagePath | String | Y | - | Personnel image path |
Interface | Retrieve Personnel Details |
---|---|
Address | /api/person/{no} |
Request Method | GET |
Description | Uses personnel management module to retrieve personnel details |
Sample Request | http://192.168.1.1/api/person/00311 |
Response Parameters | Param. Name Type Required Max. Length Descrip Example entity.id - Y - Personnel ID, 4 |
Sample Response | { "timestamp": 1579240461114, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "id": 4, "name": "Derek", "no": "00311", "idCard": "110101199909091234", "icNumber": "123456", "wgNumber": "654321", "groupId": "paramDB0", "imagePath": "/api/person/image/00311.jpeg", "ruleId": "2618e812e1f341b8977835c604ea26c8", "password": "" } } |
Further reading: Third-party application device logout.
Prerequisite: The third-party service is authorized to log into the terminal. Please refer to 2.1 Third-party application device login
Retrieve access record. Please refer to 3.4.3 Retrieve access record
Further reading: Third-party application device logout.
Device with software versions v2.3 and later support WebSocket protocol sending of access records in JSON format. This function is as described:
Supported in both Cloud service and Single host mode.
Real-time pushing of access records, with each record pushed on creation.
Support for intermittent transmission, but with prioritization. Real-time records will be pushed first, followed by previously unpushed messages.
If disruption is the result of network issues, the device will attempt to resend in 10 second
intervals until the server returns a success response.
Supports ws protocol.
Configuring the access record push:
Deactivate the default WebSocket access record push function.
Save the device’s WebSocket client.
Third-party application needs to provide a server that can support Websocket exchanges and respond with the specified parameters.
As the device needs to confirm whether the access record has been successfully transmitted or otherwise, the third-party server needs to send the response data back to the client after receiving the data.
Please refer to 3.4.3 Push access record
Configuration guide:
a) Go to the settings page and click on Settings → Advanced → Access Records → Access Records Transfer. This can be activated via the “Access Record Transfer” switch.
b) If the Access Record Transfer function is activated, the IP address must be filled up, and the port number can be changed according to deployment conditions.
When managing multiple devices at once, third-party services can obtain the number of personnel registered on each device, ensuring parity across all terminals.
Please refer to 3.3.14 Personnel Statistics
Interface | Login |
---|---|
Address | /api/account/login |
Request Method | GET |
Description | Interface access authorization, password (Administrator password). Login must be performed before calling other interfaces. |
Request Parameters | password |
Sample Request | http://192.168.1.1:8080/api/account/login?password=1234 |
Response Parameters | Default |
Sample Response | Success response. The following is an example response, if the response parameters are default, the sample is omitted. { "timestamp": 1578552376149, "message": "success", "status": "200", "path": "", "code": 0 } |
Note | A cookie is returned in the response headers, which should be included in later interfaces calls. |
Interface | Logout |
---|---|
Address | /api/account/logout |
Request Method | GET |
Description | Used to log out of the current session; can also be logged out after a series of API calls are completed. |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/account/logout |
Response Parameters | Default |
Rules refer to the access rights of personnel stored on the device. These rules include timings, and access types. Access timeframes can be customized, allowing starting and ending times to personalized on an individualized basis.
An ID number is assigned ti each rule, retrievable from the Retrieve Rule List interace. However, in other operations to update or delete identification rules, please note that the parameter is re-named ruleId.
Interface | Add Identification Rule |
---|---|
Address | /api/personrule/create |
Request Method | POST |
Description | Add an identification rule |
Sample Request | An access rule to allow access from 2021-05-13 to 2021-06-13 from 0700 to 2300 hours. { "obj": { "name": "Face20210513", "timeRule": [ { "action": "ALLOW", "customDays": [ 2, 3, 4, 5, 6 ], "dayRange": { "end": { "day": 13, "mm": 5, "year": 2021 }, "start": { "day": 13, "mm": 6, "year": 2021 } }, "dayType": "CUSTOM", "timeRange": { "end": { "hour": 23, "minute": 0, "second": 0 }, "start": { "hour": 7, "minute": 0, "second": 0 } }, "title": "work time", "type": "TIMING" } ], "type": [ "FACE" ] } } |
Response Parameters | Default |
Note | "dayRange" and "customDays" are intersective. If only the date range is set, "customDays" must be filled with all weeks. |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
obj.name | String | Y | - | Rule name | “Face20210513” |
obj.timeRule[].action | String | Y | - | Access action | “ALLOW”: Allow access “DENY”: Deny access |
obj.timeRule[].customDays | int | Y | - | Effective dates | [1,2,3,4,5,6,7] (1: Sunday, 2: Monday, continuing until 7: Saturday) |
obj.timeRule[].dayType | String | Y | - | Date time type | “CUSTOM” Custom setting) |
obj.timeRule[].dayRange.start | int | N | Start date | "day": 13, "mm": 5, "year": 2021 | |
obj.timeRule[].dayRange.end | Int | N | End date | "day": 13, "mm": 6, "year": 2021 | |
obj.timeRule[].timeRange.start | int | Y | - | Start time | "hour": 7, "minute": 0, "second": 0 |
obj.timeRule[].timeRange.end | int | Y | - | End time | "hour": 23, "minute": 0, "second": 0 |
obj.timeRule[].title | String | Y | - | Time rule name | “work time” |
obj.timeRule[].type | String | Y | - | Time rule type | “CYCLE” Repeats weekly; “TIMING” Specified date range |
obj.type | String | Y | - | Access method | "FACE", “FACE_AND_ID", “FACE_AND_PASSPORT", “FACE_AND_GUARD", “FACE_AND_IC" Choose zero or one of the four options |
Interface | Retrieve Identification Rule List |
---|---|
Address | /api/rules |
Request Method | GET |
Description | Retrieve identification rule list. The rule IDs are required for adding personnel to them. |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/rules |
Sample Response | { "timestamp": 1579232369388, "message": "success", "status": "200", "path": "", "code": 0, "entity": [ { "id": "0e903a8ec964443a8daa5c15fe35abb7", "name": " Default rule name " }, { "id": "875e979c37ed45f69a7603bc647ab481", "name": "rule1" } ] } |
Response Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
entity[i].id | String | Y | - | Rule ID | "0e903a8ec964443a8daa5c15fe35abb7" |
entity[i].name | String | Y | - | Rule name | "Default rule name" |
Interface | Retrieve Personnel Rule |
---|---|
Address | /api/personrule/query |
Request Method | POST |
Description | Retrieve all personnel rules |
Sample Request | http://192.168.1.1:8080/api/personrule/query |
Sample Response | { "timestamp": 1579232458838, "message": "success", "status": "200", "path": "", "code": 0, "entity": [ { "isShowed": false, "obj": { "description": "No Descriptions", "id": 0, "name": "Default", "timeRule": [ { "action": "ALLOW", "customDays": [ 4, 1, 7, 6, 5, 2, 3 ], "dayType": "CUSTOM", "timeRange": { "end": { "hour": 23, "minute": 59, "second": 59 }, "start": { "hour": 0, "minute": 0, "second": 0 } }, "title": "Default Time Rule", "type": "CYCLE" } ], "type": [ "FACE" ] }, "ruleId": "0e903a8ec964443a8daa5c15fe35abb7" }, { "isShowed": true, "obj": { "id": 0, "name": "rule1", "timeRule": [ { "action": "ALLOW", "customDays": [ 1, 2, 3, 4, 5, 6, 7 ], "dayType": "CUSTOM", "timeRange": { "end": { "hour": 18, "minute": 0, "second": 0 }, "start": { "hour": 9, "minute": 0, "second": 0 } }, "title": "working time", "type": "CYCLE" } ], "type": [ "FACE" ] }, "ruleId": "875e979c37ed45f69a7603bc647ab481" } ] } |
Interface | Update Personnel Rule |
---|---|
Address | /api/personrule/update |
Request Method | POST |
Description | Using retrieved rule list to obtain ruleId, to update the specified rule. RuleID will not changed after updating. |
Sample Request | Editing rule name to “New rule1”, changing time range to 2021-05-18 to 2021-06-13, allowing access on Mondays from 08:30 to 21:30. { "ruleId" : "875e979c37ed45f69a7603bc647ab481", "obj": { "name": "New rule1", "timeRule": [ { "action":"ALLOW", "customDays": [2], "dayRange": { "end": { "day": 13, "mm": 6, "year": 2021 }, "start": { "day": 18, "mm": 5, "year": 2021 } }, "dayType": "CUSTOM", "timeRange": { "end": { "hour": 21, "minute": 30, "second": 0 }, "start": { "hour": 8, "minute": 30, "second": 0 } }, "title": "new work time","type": "TIMING" } ], "type": [ "FACE" ] } } |
Response Parameters | Default |
Note | "dayRange" and "customDays" are intersective. If only the date range is set, "customDays" must be filled with all weeks. |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
ruleId | String | Y | Personnel rule ID | "875e979c37ed45f69a7603bc647ab481" Obtained from retrieving list of rules | |
obj.name | String | Y | - | Personnel rule name | “New rule1” |
obj.timeRule[].action | String | Y | - | Access action | “ALLOW” See the rules for creating a person with the same name field for details |
obj.timeRule[].customDays | int[] | Y | - | Effective dates | [1,2,3] See the rules for creating a person with the same name field for details |
obj.timeRule[].dayType | String | Y | - | Date time type | “CUSTOM” See the rules for creating a person with the same name field for details |
obj.timeRule[].dayRange.start | int | N | Start date | "day": 18, "mm": 5, "year": 2021 | |
obj.timeRule[].dayRange.end | int | N | End date | "day": 13, "mm": 6, "year": 2021 | |
obj.timeRule[].timeRange.start | int | Y | - | Start time | "hour": 8,"minute": 30,"second": 0 |
obj.timeRule[].timeRange.end | int | Y | - | End time | "hour": 21,"minute": 30,"second": 0 |
obj.timeRule[].title | String | Y | - | Time range name | “new work time” |
obj.timeRule[].type | String | Y | - | Time rule type | “CYCLE” Repeats weekly; “TIMING” Specified date range |
obj.type | String | Y | - | Access method | “FACE” See the rules for creating a person with the same name field for details |
Interface | Remove Personnel Associated with Identification Rule |
---|---|
Address | /api/personrule/deletepersons |
Request Method | POST |
Description | Used to delete all persons in the specified rule before deleting the rule. If the rule is deleted directly, personnel under the previous rule will be denied access and the device will prompt: Access permission check failed. |
Request Parameters | ruleId :String ;Required;Description:Personnel rule ID ,Example:"5dc625a1effb4e44bf275d47595d8bba" |
Sample Request | { "ruleId": "5dc625a1effb4e44bf275d47595d8bba" } |
Response Parameters | Default |
Interface | Delete Personnel Rule |
---|---|
Address | /api/personrule/delete |
Request Method | POST |
Description | Using ruleId retrieved from rule list to delete specified rules. |
Request Parameters | ruleId: String Required Description:Personnel rule ID Example : "875e979c37ed45f69a7603bc647ab481" |
Sample Request | { "ruleId": "875e979c37ed45f69a7603bc647ab481" } |
Response Parameters | Default |
Personnel details is a core aspect of use cases. When adding personnel, the no. parameter is used as a unique identifier, which is used for addition, deletion, editing and other related operations.
Interface | Batch Creation Operation |
---|---|
Address | /api/persons/batch |
Request Method | GET |
Description | Create batch addition task IDs, used for batch import for personnel details. |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/persons/batch |
Response Parameters | Default |
Sample Response | Success Response: { "timestamp": 1547624450381, "entity": { "requestId": 1 }, "status": "200", "path": "", "code": 0 } Error Response: { "timestamp": 1547624450381, "message": “import_in_progress”, "status": "400", "path": "", "code": 0``} |
Note | When this interface is called and a task is already underway, an error response will be returned to avoid resource conflicts. |
Interface | Check for In-progress Batch Tasks |
---|---|
Address | /api/persons/batch-check |
Request Method | GET |
Description | Used to check if a batch process is in progress. If a batch task exists, the requestId of the batch task is returned; if the batch task does not exist, an empty entity is returned. |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/persons/batch-check |
Response Parameters | Default |
Sample Response | Success Response: Batch task found: { "timestamp": 1547624970028, "entity": { "requestId": 1 }, "status": "200", "path": "", "code": 0 } No batch task found: { "timestamp": 1547624880860, "entity": {}, "status": "200", "path": "", "code": 0 } |
Interface | Batch Import of Personnel |
---|---|
Address | /api/persons/batch/import/{requestId} |
Request Method | POST(multipart/form-data) |
Description | Execute batch personnel import task. The execution time of this operation depends on the number of personnel and network conditions. Importing upwards of 2000 people may take upwards of minutes to complete. |
Sample Request | http://192.168.1.1:8080/api/persons/batch/import/12 { excel: excelfile, zip: zipfile, rule: ce8896dcdef44607b75421d6d4869397 } |
Response Parameters | Default |
Sample Response | Success Response: { "timestamp": 1547624967282, "message": "success", "status": "200", "path": "", "code": 0 } Sample error response: { "timestamp": 1547625506936, "message": "import_finish", "status": "400", "path": "", "code": 0 } |
Note | The requestId parameter must be given and check the validity, failing the validity check will return an error. A successful or failed import of a person will not result in an full import failure, the specific failure details will be saved to a temporary table and displayed in the next step. Only one bulk import task can be executed at any one time, otherwise the new import task will be cancelled and an import_in_progress error will be returned. There is no need to re-import after the import is complete, otherwise an import_finish error is returned. |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
rule | String | Y | - | Personnel rule ID | "ce8896dcdef44607b75421d6d4869397" |
excel | File | Y | - | Excel file of Personnel | Includes images and name fields. The Excel file is placed in the ZIP file with the personnelimages. |
Zip | File | Y | - | - | Personnel image ZIP file |
Interface | View Batch Personnel Addition Results |
---|---|
Address | /api/persons/batch/result/{requestId} |
Request Method | GET |
Description | Used after import, display the batch import results and return to the specific page. |
Request Parameters | { size Items per page page Page no. } |
Sample Request | http://192.168.1.1:8080/api/persons/batch/result/12?size=10&page=0 |
Sample Response | Success Response: With result: { "timestamp": 1547625960269, "entity": { "content": [ { "NAME": "Alice", "UUID": "030", "IMAGE_PATH": "1.jpg", "PASSWORD": "", "GENDER": "", "ORGANIZATION_ID": "", "PHONE": "", "IC_NUMBER": "", "WG_NUMBER": "", "ID_CARD_NUMBER": "", "GROUP_ID": "", "ENTRY_DATE": "", "VARIABLE1": "", "VARIABLE2": "", "VARIABLE3": "", "VARIABLE4": "", "VARIABLE5": "", "VARIABLE6": "", "VARIABLE7": "", "VARIABLE8": "", "VARIABLE9": "", "VARIABLE10": "", "batchResultDescription": "Import Failed:[Failed to Upload the Image]", "importResult": false } ], "size": 1, "page": 0, "totalElements": 11, "totalPages": 11, "first": true, "last": false }, "status": "200", "path": "", "code": 0 } Without result: { "timestamp": 1547625790977, "entity": { "content": [], "size": 20, "page": 2, "totalElements": 11, "totalPages": 1, "first": false, "last": false }, "status": "200", "path": "", "code": 0 } Failure Response: { "timestamp": 1547625760999, "message": "unknow_requestid", "status": "400", "path": "", "code": 0 } |
Note | RequestId needs to be accepted and its validity checked. If the validity check fails, an error is returned directly. If the requestId is valid, the result of the operation is generated by page.size (one page per 10 lines) and the return value of the batchResultDescription field will give the failure cause during the import of the specific person. |
Response Parameters
Param. Name | Type | Required | Max. Length | Descrip. |
---|---|---|---|---|
timestamp | String | Y | 30 | Timestamp |
status | Integer | Y | 11 | Status code |
code | Integer | Y | - | - |
message | String | N | - | Error details |
path | String | N | 10 | Path |
entity.totalElements | Long | Y | 20 | Total |
entity.size | Long | Y | 20 | Page item count (consistent with size in Request Parameters) |
entity.page | Int | Y | 10 | Current page. (Starts from 0, with 0 being the first page. Matches the Request Parameters page) |
entity.content[i] .id | String | N | 32 | Personnel ID |
entity.content[i].name | String | N | 64 | Personnel name |
entity.content[i].gender | String | N | MALE/ FEMALE/blank | Gender |
entity.content[i].phone | String | N | 64 | Phone no. |
entity.content[i].email | String | N | 64 | |
entity.content[i].entryDate | Long | N | Entry time | |
entity.content[i].createTime | Long | N | Creation time | |
entity.content[i].updateTime | Long | N | Update time | |
entity.content[i].imagePath | String | N | Personnel image path | |
entity.content[i].organizationId | Long | N | Organization ID | |
entity.content[i].organization | String | N | 64 | Organization name |
entity.content[i].avatarName | String | N | 64 | Personnel image name |
entity.content[i].batchResultDescreption | String | N | 255 | Batch import result |
entity.content[i].importResult | Byte | Y | 0/1 | Import result (0 Failure, 1 Success) |
Interface | Terminate Batch Personnel Import Tasks |
---|---|
Address | /api/persons/batch/{requestId} |
Request Method | DELETE |
Description | Actively end a batch import task |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/persons/batch/12 |
Response Parameters | Default |
Sample Response | Success Response: { "timestamp": 1547625840800, "message": "success", "status": "200", "path": "", "code": 0 } |
Note | Release occupied resource and clear temporary table contents |
Interface | Upload Personnel Image |
---|---|
Address | /api/upload/image |
Request Method | POST (multipart/form-data) |
Description | Manages image uploads |
Request Parameters | file: Image file. (The size of the imported image is limited by the menu option "Minimum imported photo pixel limit") |
Sample Request | http://192.168.1.1:8080/api/upload/image { file: file } |
Response Parameters | Param. Name Type Required Descrip. Example entity String Y File return address /api/device/admin/cache_image/NanoHTTPD- 810672376_processed |
Sample Response | Success Response { "timestamp": 1579238997823, "message": "success", "status": "200", "path": "", "entity": "/api/device/admin/cache_image/NanoHTTPD-810672376_processed", "code": 0 } Error Response http status (400-599) { "timestamp": 1531200287758, "message": " please_check_picture_and_size", "path": "", "status": 400, "code": 0 } |
Interface | Add Personnel |
---|---|
Address | /api/person |
Request Method | POST |
Description | Uses personnel management module to add personnel |
Sample Request | { "name": "Derek", "no": "00311", "idCard": "110101199909091234", "ruleId": "2618e812e1f341b8977835c604ea26c8", "icNumber": "123456", "wgNumber": "654321", "groupId": "", "imagePath": "/api/device/admin/cache_image/NanoHTTPD-810672376_processed" } |
Response Parameters | Default |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
name | String | Y | 64 | Name | Derek |
no | String | Y | 20 | No. | 00311 |
idCard | String | Y | 20 | ID No. | 110101199909091234 [optional parameter, leave blank if not used] |
icNumber | String | Y | 32 | IC card no. | 12345 [optional parameter, leave blank if not used] |
wgNumber | String | Y | 20 | WG number | 654321 [optional parameter, leave blank if not used] |
groupId | String | Y | 11 | Group | May be left blank |
ruleId | String | Y | 20 | Personnel rule | 2618e812e1f341b8977835c604ea26c8 |
imagePath | String | Y | - | Personnal image path | /api/device/admin/cache_image/NanoHTTPD-810672376_processed"``(uses /api/upload/image) |
password | String | N | 4 | Password | Must be four digits, or an empty string to clear the password |
Interface | Retrieve Personnel List |
---|---|
Address | /api/persons |
Request Method | GET |
Description | Retrieve personnel list, with pagination. Not supported in versions 2.3 and earlier. |
Request Parameters | Required parameters: size (Items per page), page (page number) |
Sample Request | http://192.168.1.1:8080/api/persons?size=1&page=0 |
Sample Response | { "timestamp": 1579496434244, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "content": [ { "id": 1, "name": "jbdbbjdj jjj ", "imagePath": "/api/person/image/Jhh0001.jpeg", "no": "Jhh0001" } ], "totalElements": 1, "totalPages": 1, "first": true, "last": true, "page": 0, "size": 1 } } |
Response Parameters
Param. Name | Type | Required | Length | Descrip. |
---|---|---|---|---|
entity.totalElements | Long | Y | 20 | Total |
entity.totalPages | Integer | Y | 10 | Total pages |
entity.first | Boolean | Y | 10 | Is first page |
entity.last | Boolean | Y | 10 | Is last page |
entity.size | Long | Y | 20 | Current item count |
entity.page | Int | Y | 10 | Current page (Starts from 0, 0 indicates first page) |
entity.content[i].id | String | Y | 32 | Personnel ID |
entity.content[i].name | String | Y | 64 | Personnel name |
entity.content[i].no | String | Y | 64 | Personnel No. |
entity.content[i].imagePath | String | Y | - | Personnel image path |
Interface | Retrieve Personnel Details |
---|---|
Address | /api/person/{no} |
Request Method | GET |
Description | Uses personnel management module to retrieve personnel details |
Sample Request | http://192.168.1.1/api/person/00311 |
Response Parameters | Param. Name Type Required Descrip. entity.id - Y Personnel ID |
Sample Response | { "timestamp": 1579240461114, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "id": 4, "name": "Derek", "no": "00311", "idCard": "110101199909091234", "icNumber": "123456", "wgNumber": "654321", "groupId": "paramDB0", "imagePath": "/api/person/image/00311.jpeg", "ruleId": "2618e812e1f341b8977835c604ea26c8", "password": "" } } |
Interface | Edit Personnel |
---|---|
Address | /api/person/{no} |
Request Method | POST |
Description | Uses personnel management module to edit, updating personnel name, ID no., IC no., WG card no., etc. |
Sample Request | { "name": "DerekW", "no": "00311", "idCard": "130123123412121234", "id": 4,"icNumber": "56789", "wgNumber": "98765", "groupId": "", "ruleId": "2618e812e1f341b8977835c604ea26c8", "imagePath": "/api/device/admin/cache_image/NanoHTTPD-810672376_processed"} |
Response Parameters | Default |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
id | Integer | Y | 20 | Personnel ID | 4 (Retrieved from personnel list or personnel details interfaces) |
name | String | Y | 64 | Name | DerekW |
no | String | Y | 20 | No. | 00311 (non-editable) |
idCard | String | N | 20 | ID No. | 130123123412121234 |
icNumber | String | N | 32 | IC card no. | 56789 |
wgNumber | String | N | 20 | WG number | 98765 |
groupId | Integer | N | 11 | Group | (May be left blank) |
ruleId | Integer | Y | 20 | Personnel rule | 2618e812e1f341b8977835c604ea26c8 |
imagePath | String | Y | - | Personnal image path | /api/device/admin/cache_image/NanoHTTPD-810672376_processed (Uses /api/upload/image) |
password | String | N | 4 | Password | 2580 (Selectable password. Passwords must be 4-digit numbers or left blank if clearing password) |
Interface | Delete Personnel |
---|---|
Address | /api/person/{no} |
Request Method | DELETE |
Description | Delete personnel. This operation is irreversible. |
Request Parameters | Default |
Sample Request | http://192.168.1.1/api/person/00311 |
Response Parameters | Default |
Interface | Clear Personnel |
---|---|
Address | /api/persons |
Request Method | DELETE |
Description | Clears all personnel |
Request Parameters | Default |
Sample Request | http://192.168.1.1/api/persons |
Response Parameters | Default |
Interface | Personnel Statistics |
---|---|
Address | /api/persons/count |
Request Method | GET |
Description | Retrieve personnel total statistics |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/persons/count |
Response Parameters | Param. Name Type Required Max. Length Descrip. Example entityI nteger Y 10 Personnel count 2000 |
Sample Response | { "timestamp": 1531200287758, "message": "success", "path": "", "status": 200, "code": 0, "entity": 2000 } |
Interface | Access Record via Http |
---|---|
Description | The server side provides the interface address to receive the push (POST); the identification record is pushed to the server side in real time and the server side returns a success response. |
Push Sample | { "accessRecordId":"8f1a839593e94f90913daa994b383610", "entity":{ "avatars":{ "NEAR_INFRARED":[ "file://HJT_20200908144101826_nir.jpeg" ], "VISIBLE_LIGHT":[ "file://HJT_20200908144101826.jpeg" ] }, "deviceInfo":{ "name":"HJTZJ 0908", "sn":"FC241118370031" }, "extension":{ "temperature":"36.2", "mask":"false", "temperatureStatus":"true" }, "id":"8f1a839593e94f90913daa994b383610", "passMode":"FACE", "personInfo":{ "groupId":"paramDB0", "groupName":"默认", "icNumber":"36C172E065", "idCard":"413026198803189337", "name":"HJT", "no":"3", "organizationId":0, "ruleId":"1", "tenantId":0, "verificationPassword":"b59c67bf196a4758191e42f76670ceba", "version":0 }, "resultType":"TERMINAL_VALIDATION_PASS", "score":"92.17443", "syncTime":1599547261826 }, "livePhoto":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB "faceResultType":"faceCheckSuccess_bodyTempNormal_right" } |
Response Parameters | Param. Name Type Required Descrip. result String Y Success : indicates successful receipt by third-party service |
Sample Response | Success Response httpStatus code: 200 {"result":"success"} |
Push Parameters
Param. Name | Type | Required | Descrip. |
---|---|---|---|
accessRecordId | String | Y | Identitication record ID |
avatars | String | Y | Image path |
deviceInfo | String | Y | Device name, Serial No. |
id | String | Y | Identitication record ID |
passMode | String | Y | FACE:Face FACE_AND_ID:Face and ID |
personInfo | String | Y | Personnel details |
identifyCard | String | N | ID card details |
resultType | String | Y | Comparison result: FACIAL_COMPARISON_PASS:Success FACIAL_COMPARISON_NOT_PASS:Failed |
score | String | Y | Comparison score |
rejectReason | String | N | Rejection cause |
syncTime | String | Y | Comparison timestamp |
extension | String | N | Temperature details |
livePhoto | String | Y | Visible light Base64 image |
faceResultType | String | N | Authentication result, including face matching, temperature and access permissions |
Interface | Push Access Record via WebSocket |
---|---|
Description | Access records are pushed to the server in real time and the server is expected to send a successful response. Access records that fail to transmit are resent in 10s cycles until a successful response is received from the server. |
Sample Request | { "accessRecordId":"073d94cb404a49808a2e576573aa4ad3", "entity":{ "avatars":{ "NEAR_INFRARED":[ "file://HJT_20200908143618044_nir.jpeg" ], "VISIBLE_LIGHT":[ "file://HJT_20200908143618044.jpeg" ] }, "deviceInfo":{ "name":"HJTZJ 0908", "sn":"FC241118370031" }, "extension":{ "temperature":"36.4", "mask":"false", "temperatureStatus":"true" }, "id":"073d94cb404a49808a2e576573aa4ad3", "passMode":"FACE", "personInfo":{ "groupId":"paramDB0", "groupName":"默认", "icNumber":"36C172E065", "idCard":"413026198803189337", "name":"HJT", "no":"3", "organizationId":0, "ruleId":"1", "tenantId":0, "verificationPassword":"b59c67bf196a4758191e42f76670ceba", "version":0 }, "resultType":"TERMINAL_VALIDATION_PASS", "score":"92.20114", "syncTime":1599546978044 }, "livePhoto":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB "faceResultType":"faceCheckSuccess_bodyTempNormal_right" } |
Response Parameters | Param. Name Type Required Descrip. accessRecordId String Y Identitication record ID |
Sample Response | Success Response {"accessRecordId":"cbc86109debf4ff9ba7c32a43743cdbc"} |
Push parameters
Param. Name | Type | Required | Descrip. |
---|---|---|---|
accessRecordId | String | Y | Identitication record ID |
avatars | String | Y | Image path |
deviceInfo | String | Y | Device name,SERIAL NO. |
id | String | Y | Same accessRecordId |
passMode | String | Y | FACE:Face FACE_AND_ID: Face + ID |
personInfo | String | Y | Personnel details |
identifyCard | String | N | ID card details |
resultType | String | Y | Comparison result: FACIAL_COMPARISON_PASS:Success FACIAL_COMPARISON_NOT_PASS:Failed |
score | String | Y | Comparison score |
rejectReason | String | N | Rejection cause |
syncTime | String | Y | Comparison timestamp |
extension | String | N | Temperature details |
livePhoto | String | Y | Visible light Base64 image |
faceResultType | String | N | Authentication result, including face matching, temperature and access permissions |
Interface | Retrieve Access Record |
---|---|
Address | /api/access-record |
Request Method | GET |
Description | Retrieve access record from device |
Sample Request | http://192.168.1.1:8080/api/access-record?resultType=0&page=0&size=1 |
Sample Response | { "timestamp": 1579247335202, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "size": 1, "totalElements": 30, "totalPages": 30, "page": 0, "first": true, "last": false, "content": [ { "avatars": { "NEAR_INFRARED": [ "/api/access-record/image/RGVyZWtXXzIwMjAwMTE3MTU0MzIyODQ4X25pcg%3D%3D.jpeg" ], "VISIBLE_LIGHT": [ "/api/access-record/image/RGVyZWtXXzIwMjAwMTE3MTU0MzIyODQ4.jpeg" ] }, "deviceInfo": { "name": "", "sn": "FC242218490096" }, "id": "ca20017a13a54b52b4507b21e6a43cb7", "passMode": "FACE", "personInfo": { "avatars": { "VISIBLE_LIGHT": [ "/api/access-record/registered_image/00311.jpeg" ] }, "groupId": "paramDB0", "groupName": "Default", "icNumber": "56789", "idCard": "130123123412121234", "name": "DerekW", "no": "00311", "organizationId": 0, "ruleId": "2618e812e1f341b8977835c604ea26c8", "tenantId": 0, "verificationPassword": "", "version": 0, "wgNumber": "98765" }, "resultType": "TERMINAL_VALIDATION_PASS", "score": "90.876", "syncTime": 1579247002848 } ] } } |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
name | String | N | 64 | Name | - |
startTime | timestamp | N | - | Start time | Timestamp in milliseconds |
endTime | timestamp | N | - | End time | Timestamp in milliseconds |
resultType | int | N | - | Access result | Access authenticated TERMINAL_VALIDATION_PASS:0 Not authenticated TERMINAL_VALIDATION_FAILURE:1 |
page | Integer | Y | - | Total pages, starting from 0 | 0 |
size | Integer | Y | - | 10 Items per page, default 10 | 1 |
Response Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
entity.totalElements | Integer | Y | - | Total item count | 1024 |
entity.totalPages | Integer | Y | 10 | Total pages | 20 |
entity.page | Interget | Y | 10 | Current page | 0 |
entity.size | Interget | Y | 10 | Items per page | 10 |
entity.first | Boolean | Y | - | Is first page | true |
entity.last | Boolean | Y | - | Is laste page | false |
entity.contentSize | float | Y | - | Access record size | 1.2 |
entity.content[i].id | String | Y | 32 | Content id | b4b5bfecdc42435880257b6fac574862 |
entity.content[i].passMode | String | Y | - | Access method | FACE FaceFACE_AND_ID Face + IDFACE_AND_PASSPORT Face + PassportFACE_AND_GUARD Face + WG CardFACE_AND_IC Face + IC card |
entity.content[i].resultType | String | Y | - | Access result | Access authenticated TERMINAL_VALIDATION_PASS:0 Not authenticated TERMINAL_VALIDATION_FAILURE:1 |
entity.content[i].rejectReason | String | N | - | Rejection cause | Invalid face match FACIAL_COMPARISON_NOT_PASSBlacklist access rejection BLACKLIST_EXCEEDS_REFUSE Personnel rule PERSONNAL_RULE_VALIDATION_FAILUREFingerprint validation failed FINGERPRINT_VALIDATION_FAILURE |
entity.content[i].syncTime | Long | Y | - | Verification timestamp | 1529719248862 |
entity.content[i].score | String | Y | - | Visible light score | 0.9 |
entity.content[i].nirScore | String | N | - | Infrared score | 0.8 |
entity.content[i].type | String | N | - | Access type | IN_TYPE |
entity.content[i].avatars | List< String > | Y | - | Image | { "VISIBLE_LIGHT":[ "http://192.168.1.1/ocfs/file/download/xxx" ] } |
entity.content[i].deviceInfo.sn | String | Y | 16 | Device serial | |
entity.content[i].personInfo.id | String | N | - | bb1d96a56faa4332a03f5fba8c594f4f | |
entity.content[i].personInfo.groupId | String | N | 32 | Recognition parameters | 64b5bfecdc42435880257b6fac574862 |
entity.content[i].personInfo.icNumber | String | N | - | IC card no. | - |
entity.content[i].personInfo.wgNumber | String | N | - | WG number | - |
entity.content[i].name | String | N | - | Name | - |
entity.content[i].personInfo.no | String | N | - | Personnel No. | - |
entity.content[i].personInfo.ruleId | String | N | - | Rule ID | - |
entity.content[i].personInfo.ruleName | String | N | - | Rule name | - |
entity.content[i].identifyCard.imageUrl | String | N | - | ID image path | - |
entity.content[i].identifyCard.address | String | N | - | Residential address | - |
entity.content[i].identifyCard.birthday | String | N | - | Birthdate | Birthdate (YYYY-MM-DD) |
entity.content[i].``identifyCard.idCard | String | N | - | ID No. | - |
entity.content[i].``identifyCard.nation | String | N | - | Nationality | - |
entity.content[i].identifyCard.countryCode | String | N | - | Country code | - |
entity.content[i].``identifyCard.gender | String | N | - | Gender | Gender (MALE,FEMALE) |
entity.content[i].identifyCard.signBegin | String | N | - | Issue date | Issue date (YYYY-MM-DD) |
entity.content[i].identifyCard.signEnd | String | N | - | Expiry date | Expiry date (YYYY-MM-DD) |
entity.content[i].identifyCard.issuePlace | String | N | - | Place of Issue | Place of Issue |
entity.content[i].identifyCard.signOrg | String | N | - | Issuing Authority | Issuing Authority |
Interface | 3.4.4. Delete Access Record |
---|---|
Address | /api/access-record |
Request Method | DELETE |
Description | Delete all access records |
Sample Request | Deleting all failed records on 2020-01-17 from 0000 to 1600 hours. http://192.168.1.1:8080/api/access-record?startTime=1579190400000&endTime=1579248000000&resultType=1 |
Response Parameters | Default |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
name | String | N | 64 | Name | - |
startTime | timestamp | N | - | Start date | - |
endTime | timestamp | N | - | End date | - |
resultType | String | N | - | Access result | Access authenticatedTERMINAL_VALIDATION_PASS:0 Not authenticated``TERMINAL_VALIDATION_FAILURE:1 |
page | Integer | Y | - | Page no., starting from 0 | 0 |
size | Integer | Y | - | Items per page, defaults to 10 | - |
Interface | Retrieve Operation Log Size |
---|---|
Address | /api/log/size |
Request Method | GET |
Description | Retrieve Operations Log Size |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/log/size |
Response Parameters | Param. Name Type Required Max. Length Descrip. Example entity String Y - Request result '18678710' |
Sample Response | Success Response { "timestamp": 1531200287758, "message": "success", "path": "", "entity": '18678710', "status": 200, "code": 0 } Error Response http status(400-599) { "timestamp": 1531200287758, "message": "Error", "path": "", "status": 400, "code": 0 } |
Interface | Retrieve Test Log Download Link |
---|---|
Address | /api/test-log/export |
Request Method | GET |
Description | Compress the test log and return the ZIP file name |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/test-log/export |
Response Parameters | entity: String Required Description: Returned file name Example: test_log_1551857211265.zip |
Sample Response | Success Response { "timestamp": 1531200287758, "message": "success", "path": "", "entity": "test_log_1551857211265.zip”, "status": 200, "code": 0 } Error Response http status (400-599) { "timestamp": 1531200287758, "message": "Error", "path": "", "status": 400, "code": 0 } |
Interface | Download Test Log |
---|---|
Address | /api/download/test-log |
Request Method | GET |
Description | Download Test Log |
Request Parameters | Param. Name Type Max. Length Required Descrip. Example fileName String 60 Y File name test_log_1551857211265.zip |
Sample Request | http://192.168.1.1:8080/api/download/test-log?fileName=test_log_1551857211265.zip |
Response Body | File stream |
Interface | Clear Test Log |
---|---|
Address | /api/test-log |
Request Method | DELETE |
Description | Clear Test Log |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/test-log |
Response Parameters | Default |
Interface | Retrieve Log Download Link |
---|---|
Address | /api/log/export |
Request Method | GET |
Description | Retrieve Log Download Link |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/log/export |
Response Parameters | Param. Name Type Required Max. Length Descrip. Example entity String Y - Returned file name bboxlog-20190306155554.tar.gz |
Sample Response | Success Response { "timestamp": 1531200287758, "message": "success", "path": "", "entity": "bboxlog-20190306155554.tar.gz", "status": 200, "code": 0 } |
Interface | Log Download |
---|---|
Address | /api/download/log |
Request Method | GET |
Description | Log Download |
Request Parameters | Param. Name Type Max.Length Required Descrip. Example fileName String 60 Y File name bboxlog-20190306155554.tar.gz |
Sample Request | http://192.168.1.1:8080/api/download/log?fileName=bboxlog-20190306155554.tar.gz |
Response Body | File stream |
Interface | Clear Log |
---|---|
Address | /api/log |
Request Method | DELETE |
Description | Clear log |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/log |
Response Parameters | Default |
Interface | Retrieve Device Settings |
---|---|
Address | /api/setting |
Request Method | GET |
Description | Retrieve device settings, including language and mode |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/setting |
Response Parameters | Param. Name Type Required Max. Length Descrip. Example entity.lang String Y - Device language zh-CN entity.mode String Y - Device mode standalone |
Sample Response | { "timestamp": 1579400150494, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "lang": "zh_CN", "mode": "standalone" } } |
Interface | Add Device Administrator |
---|---|
Address | /api/device/admin |
Request Method | POST |
Description | Add administrator to device |
Sample Request | { "imagePath": "/api/device/admin/cache_image/NanoHTTPD-967652038_processed", "name": "WancyL", "password": "0987" } |
Response Parameters | Default |
Sample Response | Success Response { "timestamp": 1579252901643, "message": "success", "status": "200", "path": "", "code": 0, "uuid": "dcd4147b65dc42e58f64b5a065023b9e" } Error Response http status (400-599) { "timestamp": 1531200287758, "message": "add_admin_failed", "path": "", "status": 400, "code": 0 } |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
name | String | Y | 64 | Name | WancyL |
imagePath | String | Y | - | Image | /api/device/admin/cache_image/NanoHTTPD-967652038_processed (Uses /api/upload/image) |
password | String | Y | 4 | Password, 4-digit no. | 0987 (No restrictions on weak passwords, but is discouraged) |
Interface | Retrieve Administrator List from Device |
---|---|
Address | /api/device/admins |
Request Method | GET |
Description | Up to 10 administrators |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/device/admins |
Sample Response | { "timestamp": 1579254755093, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "content": [ { "id": 1, "name": "DerekM", "imagePath": "/api/device/admin/image/95104f315e6849a0adce9d980de9e7ab", "uuid": "95104f315e6849a0adce9d980de9e7ab" }, { "id": 5, "name": "WancyL", "imagePath": "/api/device/admin/image/406ce43ec276456b83a5141ac3876b99", "uuid": "406ce43ec276456b83a5141ac3876b99" }, ] } } |
Response Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
entity.content[i].name | String | Y | 10 | Administrator name | "WancyL" |
entity.content[i].imagePath | String | Y | 200 | Administrator image | "/api/device/admin/image/406ce43ec276456b83a5141ac3876b99" |
entity.content[i].id | integer | Y | 20 | ID | 5 (For editing admin. Personnel) |
Interface | Retrieve Device Administrator Details |
---|---|
Address | /api/device/admin/{id} |
Request Method | GET |
Description | Retrieve device administrator details |
Sample Request | http://192.168.1.1:8080/api/device/admin/1 |
Sample Response | { "timestamp": 1579254105833, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "name": "WancyL", "imagePath": "/api/device/admin/image/406ce43ec276456b83a5141ac3876b99", "password": "", "uuid": "406ce43ec276456b83a5141ac3876b99" } } |
Response Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
entity.name | String | Y | 64 | Name | WancyL |
entity.imagePath | String | Y | 200 | Image path | /api/device/admin/image/406ce43ec276456b83a5141ac3876b99 |
entity.password | String | Y | 20 | Password | Secured. Not displayed. |
Interface | Edit Device Administrator |
---|---|
Address | /api/device/admin/{id} |
Request Method | POST |
Description | Edit existing administrator details |
Sample Request | http://192.168.1.1:8080/api/device/admin/5 { "imagePath": "/api/device/admin/cache_image/NanoHTTPD-2080001498_processed", "name": "WancyL2", "password": "1111", "id":5 } |
Response Parameters | Default |
Request Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
id | Int | Y | 20 | ID | 5 |
name | String | Y | 64 | Name | WancyL2 |
imagePath | String | Y | - | Image | /api/device/admin/cache_image/NanoHTTPD-2080001498_processed (Uses /api/upload/image) |
password | String | Y | 4 | Password, 4-digit code | 1111 (No restrictions on weak passwords, but is discouraged) |
Interface | Retrieve Device Details |
---|---|
Address | /api/device |
Request Method | GET |
Description | Retrieve device current’s details |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/device |
Sample Response | Success Response { "timestamp": 1579495638494, "message": "success", "status": "200", "path": "", "code": 0, "entity": { "name": "", "limit": "20", "type": "4001", "sn": "FC242218490096", "softwareVersion": "BFRT_3G_MP_2.3.2.5.d.s.u_11081321", "algorithmVersion": "7.2", "hardwareVersion": "D20", "wirelessAddress": "4C:E5:AE:00:2A:28", "wirelineAddress": "4C:E5:AE:00:3E:27" } } Error Response http status(400-599) { "timestamp": 1531200287758, "message": "Error", "path": "", "status": 400, "code": 0 } |
Response Parameters
Param. Name | Type | Required | Max. Length | Descrip. | Example |
---|---|---|---|---|---|
entity.name | String | N | - | Device name | AAA |
entity.limit | Integer | - | - | Personnel upper limit | 20000 |
entity.type | Integer | - | - | Device type | 4001 |
entity.sn | String | - | - | Serial no. | 232121212 |
entity.softwareVersion | String | - | - | Software ver. | 3.2.3 |
entity.algorithmVersion | String | - | - | Algorthim ver. | 6.5 |
entity.hardwareVersion | String | - | - | Hardware ver. | 6.5 |
entity.wirelessAddress | String | - | - | Wireless MAC address | 00-00-00-00 |
entity.wirelineAddress | String | - | - | Wired MAC address | 00-00-00-00 |
Interface | Export Settings |
---|---|
Address | /api/device/config/setting/export |
Request Method | GET |
Description | Export current settings on device |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/device/config/setting/export |
Sample Response | Please refer to 4.1 Setting Export Interface XML Content |
Interface | Import Settings |
---|---|
Address | /api/device/config/setting/import |
Request Method | POST (multipart/form-data) |
Description | Import saved device settings |
Request Parameters | file: XML file to import |
Sample Request | http://192.168.1.1:8080/api/device/config/setting/import{file: file``} |
Response Parameters | Default |
Interface | Reset Device Settings |
---|---|
Address | /api/operation/restore |
Request Method | GET |
Description | Resetting settings will not affect personnel and access record data. Resetting settings will not affect device mode. Re-registration is not required. |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/operation/restore |
Response Parameters | Default |
Interface | Reboot Device |
---|---|
Address | /api/operation/reboot |
Request Method | GET |
Description | Reboot device |
Request Parameters | Default |
Sample Request | http://192.168.1.1:8080/api/operation/reboot |
Response Parameters | Default |
Interface | Door control |
---|---|
Address | /api/operation/open |
Request Method | GET |
Description | Device door control interface. Can be set to open temporarily or unlocked. |
Request Parameters | Param. Name Type Required Descrip. Example keep Boolean Y true:Full unlock , false: Temporary unlock true |
Sample Request | http://192.168.1.1:8080/api/operation/open?keep=true |
Response Parameters | Default |
Interface | Comparison trigger |
---|---|
Address | /api/startmatchprocess |
Request Method | GET |
Description | A direct call to this interface (3.5.13) can also change the trigger method to a manual trigger. Generate a valid comparison result only once and return the result |
Sample Request | http://192.168.1.1:8080/api/startmatchprocess |
Response Parameters | Default |
Sample Response | Success Response { "timestamp": 1585305818093, "message": "success", "status": "200", "path": "", "code": 0, "data": { "base64Img": { "NEAR_INFRARED": [ "base64imagedata..." ], "VISIBLE_LIGHT": [ "base64imagedata..." ] }, "avatars": { "VISIBLE_LIGHT": [ "file://url.jpeg" ], "NEAR_INFRARED": [ "file://url.jpeg" ] }, "deviceInfo": { "name": "", "sn": "FC6NLM19330036" }, "id": "3fc8bcd4f77a40c8956b7a6164d54e32", "passMode": "FACE", "personInfo": { "groupId": "paramDB0", "groupName ": "", "icNumber": "", "name": "zyjname", "no": "m1234", "organizationId": 0, "ruleId":"a959ce1c67fd46dc92a8c1e458af4aa2", "tenantId": 0, "verificationPassword": "", "version": 0, "wgNumber": "" }, "resultType": "TERMINAL_VALIDATION_PASS", "score": "83.29581", "syncTime": 1585305817799 } } |
Interface | Comparison Trigger Mode |
---|---|
Address | /api/matchprocess |
Request Method | GET |
Description | Devices will automatically verify faces by default. This interface can be used to deactivate the automated trigger. |
Request Parameters | Param. Name Type Required Descrip. isauto String Y Is matching automatic,true false |
Sample Request | http://192.168.1.1:8080/api/matchprocess?isauto=false |
Response Parameters | Default |
Interface | Take picture |
---|---|
Address | /api/camera/snapshot |
Request Method | GET |
Description | Visible-light photo is taken by the device. No face matching is performed. |
Request Parameters | Param. Name Type Required Descrip. compression String N true false If image is compressed. Defaults to true. imgMostSizeKb int N Max. file size. Default size is 50kb |
Sample Request | http://192.168.1.1:8080/api/camera/snapshot |
Sample Response | Success Response { "timestamp": 1545708721414, "message": "success", "status": "200", "path": "", "code": 0, "imagebase64/jpeg":"Base64imagedata..." } |
Interface | Screen and Fill-light Brightness |
---|---|
Address | /api/setting/brightness |
Request Method | GET |
Description | Adjust device screen amd fill-light brightness |
Sample Request | http://192.168.1.1:8080/api/setting/brightness?screen=100 |
Response Parameters | Default |
Request Parameters
Param. Name | Type | Required | Descrip. |
---|---|---|---|
screen | int | N | Comparison-mode screen brightness. Value range from 0-255 |
basescreen | int | N | Standby mode screen brightness. Value range 0-255 |
led | int | N | Comparison-mode fill-light brightness. Value range from 0-255 |
baseled | int | N | Standby mode fill-light brightness. Value range 0-255 |
{"configList":[{"descriptor":{"ui":{"type":"TEXT"},"explain":"About Device","limit":0,"readonly":false,"required":true,"unique":true},"key":"about_device","value":{"configList":[{"descriptor":{"ui":{"type":"TEXT"},"explain":"Name","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.deviceName","value":""},{"descriptor":{"ui":{"type":"TEXT"},"eplain":"Device Type","limit":0,"readonly":true,"required":true,"unique":true},"key":"ro.bbox.devicetype","value":"4001"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Serial No.","limit":0,"readonly":true,"required":true,"unique":true},"key":"ro.setting.deviceSn","value":"FC242218490096"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Software Version","limit":0,"readonly":true,"required":true,"unique":true},"key":"ro.bbox.sw.version","value":"BFRT_3G_MP_2.3.2.5.d.s.u_11081321"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Algorithm Version","limit":0,"readonly":true,"required":true,"unique":true},"key":"bbox.setting.algorithmVersion","value":"7.2"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Hardware Version","limit":0,"readonly":true,"required":true,"unique":true},"key":"ro.bbox.hw.version","value":"D20"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Wireless MAC Address","limit":0,"readonly":true,"required":true,"unique":true},"key":"ro.bbox.wifimac","value":"4C:E5:AE:00:2A:28"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Wired MAC Address","limit":0,"readonly":true,"required":true,"unique":true},"key":"ro.bbox.ethmac","value":"4C:E5:AE:00:3E:27"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Personnel Capacity","limit":0,"readonly":true,"required":true,"unique":true},"key":"persist.license.maxmember","value":"20"}],"name":"About Device"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"First-time Verification","limit":0,"readonly":false,"required":true,"unique":true},"key":"recognition_trigger_mode","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"IC/ID Trigger","value":"12"},{"name":"External Trigger","value":"48"},{"name":"Auto-trigger","value":"63"}],"type":"RADIO"},"explain":"First-time Verification","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.core.fr.app.foreground_trigger2","value":"63"}],"name":"First-time Verification"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Access Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"common_setting","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"简体中文","value":"0"},{"name":"English","value":"1"}],"type":"SELECT"},"explain":"System Langauge","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.language","value":"0"},{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Sound","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.isSilent","value":"true"},{"descriptor":{"ui":{"max":15,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Language","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.voiceNumber","value":"11"},{"descriptor":{"ui":{"max":255,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Brightness","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.brightness","value":"102"}],"name":"Access Settings"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Facial Recognition Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"face_recognize_setting","value":{"configList":[{"descriptor":{"ui":{"type":"TEXT"},"explain":"Image Quality Analysis","limit":0,"readonly":false,"required":true,"unique":true},"key":"quality_check","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Image Quality Analysis Switch","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.qualityJudgment","value":"true"},{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Tilt limit","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.angleLimit","value":"true"},{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Ambiguity threshold(%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.fuzzinessLimit","value":"100"},{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Occlusion threshold(%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.obscuredLimit","value":"100"}],"name":"Image Quality Analysis"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Veriification Mode","limit":0,"readonly":false,"required":true,"unique":true},"key":"verify_mode","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"1:1 Mode","value":"0"},{"name":"1:N Mode","value":"1"},{"name":"Hybrid Mode","value":"2"}],"type":"RADIO"},"explain":"Veriification Mode","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.verificationmode","value":"2"}],"name":"Veriification Mode"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Scenario Profile","limit":0,"readonly":false,"required":true,"unique":true},"key":"profiles_select","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"Quick Mode","value":"0"},{"name":"Secure Mode","value":"1"},{"name":"Custom Mode","value":"2"}],"type":"RADIO"},"explain":"Profile Selection","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.matchlevel","value":"1"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Setting Parameters","limit":0,"readonly":false,"required":true,"unique":true},"key":"cumstom_profiles_param_settings","value":{"configList":[{"descriptor":{"ui":{"type":"TEXT"},"explain":"Liveness Detection Parameters","limit":0,"readonly":false,"required":true,"unique":true},"key":"live_param","value":{"configList":[{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Liveness Detection Visible Light Threshold(%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.matchThreshold.liveThreshold","value":"50"},{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Liveness Detection Infrared Threshold(%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.matchThreshold.liveNirthreshold","value":"50"}],"name":"Liveness Detection Parameters"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"1:N Mode Parameters","limit":0,"readonly":false,"required":true,"unique":true},"key":"recognize_1:N_param","value":{"configList":[{"descriptor":{"ui":{"items":[{"value":"Default"}],"type":"SELECT"},"explain":"Identification Parameter Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.recognizeDB.id","value":"Default"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Identification Parameters","limit":0,"readonly":false,"required":true,"unique":true},"key":"recognize_param_db","value":{"configList":[{"descriptor":{"ui":{"type":"TEXT"},"explain":"Default","limit":0,"readonly":false,"required":true,"unique":true},"key":"paramDB0","value":{"configList":[{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Visible Light Threshold(%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"persist.visibleLight.matchThreshold","value":"80"},{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Infrared Threshold(%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"persist.nir.matchThreshold","value":"0"}],"name":"Default"}}],"name":""}}],"name":"1:N Mode Parameters"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"1:1 Mode Parameters","limit":0,"readonly":false,"required":true,"unique":true},"key":"recognize_1:1_param","value":{"configList":[{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Visible Light Threshold(%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.matchThreshold.one.threshold","value":"70"}],"name":"1:1 Mode Parameters"}}],"name":"Facial Recognition Setting Parameters"}}],"name":"Scenario Selection"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Repeated Recognition Timeframe","limit":0,"readonly":false,"required":true,"unique":true},"key":"face_duplicate_recognition","value":{"configList":[{"descriptor":{"ui":{"max":300,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Repeated Recognition Timeframe (S)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.repeat.recognition.time"}],"name":"Repeated Recognition Timeframe"}}],"name":"Facial Recognition Settings"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Camera Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"camera_setting","value":{"configList":[{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Base Brightness (%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.baseLed","value":"3"},{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Recognition Mode Brightness (%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.ledValue","value":"10"},{"descriptor":{"ui":{"max":30,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Recognition Mode Duration (s)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.ledTime","value":"3"},{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Recognition Mode Sensitivity (%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.ledSensitivity","value":"80"},{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Infrared Lamp Adjustment (%)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.led.nir.value","value":"100"},{"descriptor":{"ui":{"max":180,"min":30,"step":10,"type":"SLIDEBAR"},"explain":"Recognition Distance (Unit: cm)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.MaxRecognizeDistance","value":"180"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Visible Light Camera Exposure","limit":0,"readonly":false,"required":true,"unique":true},"key":"visible_exposure","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"Automatic","value":"0"},{"name":"Manual","value":"1"}],"type":"SELECT"},"explain":"Exposure Mode","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.exposure.light.type","value":"0"},{"descriptor":{"ui":{"max":30,"min":-30,"step":1,"type":"SLIDEBAR"},"explain":"Manual Exposure","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.exposure.light","value":"0"}],"name":"Visible Light Camera Adjustment"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Visible Light Camera Exposure","limit":0,"readonly":false,"required":true,"unique":true},"key":"nir_exposure","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"Automatic","value":"0"},{"name":"Manual","value":"1"},{"name":"Smart Mode","value":"2"}],"type":"SELECT"},"explain":"Exposure Mode","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.exposure.nir.type","value":"2"},{"descriptor":{"ui":{"max":30,"min":-30,"step":1,"type":"SLIDEBAR"},"explain":"Manual Exposure","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.exposure.nir","value":"0"}],"name":"Visible Light Camera Exposure"}}],"name":"Camera Settings"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"More Comparison Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"compare_mode","value":{"configList":[{"descriptor":{"ui":{"type":"TEXT"},"explain":"ID Comparison Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"again_verify","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Permissions List","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.local.verify.toggle","value":"false"}],"name":"ID Comparison Settings"}},{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Fingerprint","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.fingerprint","value":"false"},{"descriptor":{"ui":{"items":[{"name":"Face or Fingerprint","value":"0"},{"name":"Face and Fingerprint","value":"1"}],"type":"SELECT"},"explain":"Fingerprint Verification","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.fingerprint.verify.mode","value":"0"},{"descriptor":{"ui":{"max":1000,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Fingerprint Comparison Threshold","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.fingerprintThreshold","value":"600"}],"name":"More Comparison Settings"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Prompt Text","limit":0,"readonly":false,"required":true,"unique":true},"key":"custom_hint","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"Smart Prompt","value":"0"},{"name":"MP3Prompt","value":"1"}],"type":"RADIO"},"explain":"Prompt Text","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.custom.hint.code","value":"1"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"MP3Prompt","limit":0,"readonly":false,"required":true,"unique":true},"key":"mp3_prompt","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"Default","value":"0"},{"name":"Custom","value":"1"}],"type":"RADIO"},"explain":"中文","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.custom.hint.state.zh","value":"0"},{"descriptor":{"ui":{"items":[{"name":"Default","value":"0"},{"name":"Custom","value":"1"}],"type":"RADIO"},"explain":"English","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.custom.hint.state.en","value":"0"}],"name":"MP3Prompt"}}],"name":"Prompt Text"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Content Broadcasting","limit":0,"readonly":false,"required":true,"unique":true},"key":"standby_setting","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"Facial Mode","value":"1"},{"name":"Media Mode”,"value":"0"}],"type":"SELECT"},"explain":"Display Mode","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.settings.oids.display_mode","value":"1"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Media Mode Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"oids_mode","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Recognition Prompt Details","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.settings.oids.hint_msg_switch","value":"true"},{"descriptor":{"ui":{"max":100,"min":0,"step":1,"type":"SLIDEBAR"},"explain":"Recognition Window Transparency","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.settings.oids.recognition_window_trans","value":"100"},{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Standby Details","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.settings.oids.standby_msg_switch","value":"true"},{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Screen Time","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.settings.oids.standby_time_switch","value":"true"}],"name":"Media Mode Settings"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Facial Mode Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"face_mode","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Standby Mode Details","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.settings.recognition.standby_msg_switch","value":"true"},{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Screen Time","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.settings.recognition.standby_time_switch","value":"true"}],"name":"Facial Mode Settings"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Facial Mode Display Details ","limit":0,"readonly":false,"required":true,"unique":true},"key":"standby_display_info","value":{"configList":[{"descriptor":{"ui":{"type":"TEXT"},"explain":"Standby First Line Details","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.standby.message","value":"Welcome"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Standby Second Line Details","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.standby.next.message","value":""}],"name":"FFacial Mode Display Details"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Standby Wallpaper","limit":0,"readonly":false,"required":true,"unique":true},"key":"standby_wallpaper","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Media Cycle","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.carousel.switch","value":"true"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Cycle Duration(s)","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.carousel.time","value":"20"}],"name":"Standby Wallpaper"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Standby Video","limit":0,"readonly":false,"required":true,"unique":true},"key":"standby_video","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Cycle Loop","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.setting.carousel.switch.video","value":"true"}],"name":"Standby Video"}}],"name":"Content Broadcasting"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Date and Time","limit":0,"readonly":false,"required":true,"unique":true},"key":"data_time_setting","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"01-20","value":"0"},{"name":"Jan 20","value":"1"},{"name":"20-01","value":"2"}],"type":"SELECT"},"explain":"Date Format","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.date.format.type","value":"0"},{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Time Server Synchronisation","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.time.net.sync","value":"true"}],"name":"Date Time"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Minimum Import Image Resolution","limit":0,"readonly":false,"required":true,"unique":true},"key":"import_pic","value":{"configList":[{"descriptor":{"ui":{"items":[{"name":"32x32","value":"0"},{"name":"128x128","value":"1"},{"name":"320x320","value":"2"}],"type":"SELECT"},"explain":"Minimum Import Image Resolution","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.core.fr.face.import_preprocess_min_size"}],"name":"Minimum Import Image Resolution"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Access Record","limit":0,"readonly":false,"required":true,"unique":true},"key":"recognition_record","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Test Mode","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.test.record.toggle","value":"false"},{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Infrared Image","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.core.fr.face.record.save_nir","value":"true"},{"descriptor":{"ui":{"items":[{"name":"Standard","value":"0"},{"name":"Economic","value":"1"}],"type":"SELECT"},"explain":"Access Record Resolution Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.core.fr.face.record.pic_type","value":"0"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Access record transmission","limit":0,"readonly":false,"required":true,"unique":true},"key":"record_transmission","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Access record transmission","limit":0,"readonly":false,"required":true,"unique":true},"key":"persist.websocket.status.toggle","value":"false"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Protocol","limit":0,"readonly":true,"required":true,"unique":true},"key":"persist.websocket.protocol.header","value":"ws"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"IP Address","limit":0,"readonly":false,"required":true,"unique":true},"key":"persist.websocket.url.ip"},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Port No.","limit":0,"readonly":false,"required":true,"unique":true},"key":"persist.websocket.url.port"}],"name":"Access record transmission"}}],"name":"Access Record"}},{"descriptor":{"ui":{"type":"TEXT"},"explain":"Device Web Server Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"webserver_settings","value":{"configList":[{"descriptor":{"ui":{"type":"TOGGLE"},"explain":"Device Web Server Settings","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.webserver.enable","value":"true"},{"descriptor":{"ui":{"items":[{"name":"http","value":"0"},{"name":"https","value":"1"}],"type":"SELECT"},"explain":"Transfer Protocol","limit":0,"readonly":false,"required":true,"unique":true},"key":"bbox.webserver.enablehttps","value":"0"}],"name":"Device Web Server Settings"}}],"name":"Settings"}