ENGAGE_JSON_Data_Structures

ENGAGE - JSON Data Structures

REVISION CONTROL RECORD   
VERDateDESCRIPTION OF CHANGEAUTHOR
1.08/15/2015- Re-baselined after internal review and removed old change list. Please see previous versions for more detailed change list.Z. GrandPre
1.0110/08/2015- Updated Appendix A to state which credential types are supported by different productsJ. Everson / Z. GrandPre
  - Added Notes column to note which messages do not pertain to a device (NDE, chlage Control, LE) 
  - Added configurations for Schlage Control 
  - Added configurations for LE 
  - Added additional credential tag “blocked” 
  - Added additional lock type “prvcy” (privacy) 
  - Added real-time subscription for Deadbolt, IPB, LBM 
1.0211/30/2015- Removed HHMMSS from mfgDt tag; changed linkID to linkIdK Broerman / Z. GrandPre
  - Added “0” as acceptable values for “fwDwnLdTm” and “fwImplTm” 
  - Added “wifiAlertEn” as a new tag for NDE and LE devices to add the function to enable/disable WiFi alerts. 
1.0312/1/2015- Added the last valid date for user expirationJ. Baumgarte
1.0412/04/2015- Added 2 new gateway URIs to Table 24S. Walsmith
1.0512/10/2015- Added missing tags to section 4.1.5Z. GrandPre
1.061/7/2016- Added a few missing tags to Table 7J. Baumgarte
1.071/13/2016- Changed Gateway SSH config tag from enableSSHport to sshEnableK. Broerman
1.081/26/2016- Corrected credential schedule block length from 1-1440 to 1-1439 adding note that 1439 represents 23:59:59J. Everson
1.092/4/2016- Corrected Activation/Expiration comment.J. Baumgarte
  - Added comment around rtcTime 
  - Corrected comment around holiday 
  - Corrected capitalization of fwurl, added comment for fwUrl 
1.102/24/2016- Added wifiAlertSelT. Anfield
  - Clarified crSch and days tag is an array of Strings for holidays, schedules 
1.113/8/2016- Changed deadbolt Hardware Configuration (hwCfg) from db to dbolt to avoid confusion with db which is used for databasesJ. Everson
1.123/22/2016- Fixed camelCasing on the blinkIntLed, rapidBlink, and ipbAudit LE tagsT. Anfield
  - Clarified Alerts and removed Propped Door which is only an audit 
1.133/30/2016- Changed ipbAudit to ipbAuditEnable for naming clarity in Modifiable ParametersR. Rayburn
  - Corrected blinkIntLed, rapidBlink, and ipbAuditEnable LE tags in Retrievable Parameters section 
1.1404/08/2016- Added signalQuality to Table 15S. Walsmith
  - Changed “Connected” to “connected” in the example following Table 15 
  - Added description to Section 4.1.3 
1.1505/09/2016- Added MiFare Plus (mip14443) Cred Type to 2.7.1 and 2.7.2T. Anfield
1.1605/25/2016- Updated Model to add LE hardware versions lems, lemb, lemdJ. Everson
  - Removed HwCfg (moving to Model for hardware config) 
1.1706/10/2016- corrected string length of nxtDbVerTSS. Walsmith
1.1806/10/2016- Added prvcySecd to lock state under Lock StatusJ. Everson, T. Anfield
  - Updated IPB Audit Enable / Disable to show that LE doesn’t support 
1.1906/17/2016- Corrected copy/paste error on blinkIntLed, rapidBlink and ipbAuditEnable under retrievable parametersJ. Everson
1.2007/18/2016- Add runDiag and calDPS credential type definitionT. Anfield
1.2108/04/2016- Change lock to device in most placesJ. Evenson
  - Add Argos specifics to document 
1.2208/11/2016- Add lockID to retrievable parameter listJ. Everson
  - Updated lockID JSON DOOR ID from 0 – 65535 to 0 – 65534 for valid range 
  - Added to lockID tag that a value of 65535 disables no tour on LE locks 
1.2308/17/2016- Updated AR Content to reference VDE for Von Duprin Exit Device.D. Pfunder
  - Added VDE controls and status for clutch sensing (same as AD content), next-man-in settings (same as other ENGAGE products), and LED controls (as NDE reader LED) 
1.2409/06/2016- Add dpsEn for DPS audit suppressionT. Anfield
  - Correct delay ranges (relock, ADA, door prop) 
1.2509/21/2016- Remove Section 4.2.6, Gateway URI tableS. Walsmith
1.2610/06/2016- Clarified iCls15693 and pivConfig not supported by NDE or SCT. Anfield
  - Added rtcTime not changed if within 5 minutes of current time note 
  - Added note regarding older NDE firmware versions only supporting /api/firmware/latest as fwurl endpoint; also note on mobile app behavior for Update Firmware. 
  - Added note to fwDwnLdTm and fwImplTm regarding only immediate implementation is supported at this time 
1.2710/27/2016- Removed Latch bolt for LE locksJ. Everson
1.2810/28/2016- iCls15693 not supported by LE, mip14443 supported by NDE, SCT. Anfield
1.2911/02/2016- Added ipClient for Gateway commissioning in ip Client modeA. Patel
  - Added Gateway Directed Firmware Upgrade related tags. 
1.3012/08/2016- Added L to device exclusions for magTamperDetected RTAC messagesJ. Everson
1.311/10/2017- Fixed “Config”, “Type”, and “Relock in Modifiable Parameters to reflect the correct camelCaseF. Holt
  - Added Section “Linking Edge Devices” to reflect the JSON tag linkInfo 
  - Added Section “Edge Device Firmware Update via Gateway” to reflect the updated capability if ENGAGE 5.0 
1.321/16/2017- Added “customKeyPrsntd” to report Custom Key Installation Status.A. Kamath
  - Added Device Profiles and dneEn tag for Argos.T. Anfield
1.331/25/2017- Update retrievable parameters “dbUpdateStatus” for database resume featureS. Thaker
  - Update retrievable parameters section to include “dpsEn” and “wifiAlertSel” 
1.3402/17/2017- Added rdrSense functionT. Anfield
1.3503/20/2017- Added CTE ENGAGE controller. Added new credential types ctAuxToggle, ctMnAuxPassThru, ctMnAuxToggle.J. Everson, D. Pfunder
  - Added new lckMode 310 and fwVer for Ethernet 
  - Added new mdl type “cte” 
  - Added new configs for doorPropEn, pinLength, pinEn, immRelockEn 
  - Added new DAD 
1.3604/18/2017- Added line power retrievable parameters for CTEJ. Everson
1.374/26/2017- Made corrections to reader parameters to accurately represent Schlage Control ExceptionsT. Holt
1.3804/28/2017- Added gatweayCommFail setting for RMRU and clarified rsiCommFailSFMd support for RMRUD. Pfunder T. Holt
1.395/12/2017- Removed the duplicate table which was in section 2.7 (duplicate of 2.7.1). Error correction only.T. Holt
1.405/22/2017- Removing NDE as exception from No-Tour JSON tagsT. Holt
1.416/05/2017- Correcting Exceptions to JSON tags “cntrlDecTimeout” and “credSectNum”T. Holt
  - Added JSON tag “invCrdAudEn” to the Modifiable Parameters section for future development. 
1.426/13/2017- Fixed “interfaceId” value “eth0”. Was erroneously “eth” before this correction.T. Holt
1.436/16/2017- Fixed “interfaceId” value “wlan0”. Was erroneously “wlan” before this correction.T. Holt
  - Fixed inconsistent Abbreviations for the Device Exceptions Column 
  - Included all RMRU and CTE tags into this document for the ENGAGE 5.2 release. 
1.446/26/2017- Added the JSON tag “lockId” to the end of the audit trail and added comments about this being sent if the lockId configuration is changedT. Holt
1.457/10/2017- Added Reader Tamper to the Asynchronous Events sectionT. Holt
1.467/18/2017- Added lineV to edge device link list array for CTE onlyJ. Everson
1.4708/22/2017- Added tamperFail for RM/RU. Clarified firstManIn is not supported for RMRU. Clarified bprEn is supported for RMRU. Clarified battFail for RMRUD. Pfunder
1.4808/23/2017- Added mt20w WiFiTest extension to dvcprofileT. Anfield
1.4909/18/2017- ipbLedBlink marked as supported for RM/RUD. Pfunder
  - wtyAct and rdrPrmtrs marked as not supported for CTE 
1.509/19/2017- “crSn” changed to “sn” as part of the “rdrPrmtrs” parent tag. This was a mistake in the documentation.T. Holt
  - added “blocked” as a supported credential type for NDE and a definition of “blocked” to the credential type definitions. 
  - added definition that “toggle” credential type functions as “norm” credential type for SC. 
1.5110/6/2017- “Mdl” changed to “mdl” in section 2.7.2.2 (Retrievable Parameters). This was an auto-correct error.T. Holt
1.5210/25/2017- Made comments around “li” tag for lithium batteries always reporting 0 for NDE, LE, CTE, RMRU, and SC when connected to a GWET. Holt
1.5310/25/2017- credRdrBl, alarmPosition, auxPosition, rdrTamperDetected updated to show actual usage (CTE Only)T. Holt
1.5410/26/2017- Added JSON tag “invCrdAudEn” to the Retrievable Parameters sectionT. Holt
  - Removed Exceptions from invCrdAudEn for ENGAGE 6.0 release 
1.5511/6/2017- Removed Table 12 duplicate tableT. Holt
  - Added NDE, LE, RMRU, CTE as excluded from altDns 
  - Added note regarding 1 min rtc delta for ENGAGE 6.0 
  - Added note regarding fwImplTm now being support as expected for all products. 
1.5611/8/2017- Added notes around support for GWE firmware download over HTTPST. Holt
  - Added note regarding the deprecation of rtcBatteryStatus and utilization of rtccStatus instead for ENGAGE 6.0 Gateway 
  - Added note around how to turn off WiFi Alerts with the enable and empty array selection tags. 
1.571/3/2018- fixed “lock”, “main”, “ble”, “wifi” tags camelCase in section 2.7.2 Retrievable ParametersT. Holt
1.581/29/2018- Added “pendingReschedule” and “pendingCancel” to “fwUpdate” tag for Firmware Update Status from the Gateway.T. Holt
  - Added “jsonHMAC” and “dupAuditDet” extensions to the device profile for devices which support JSON HMAC and additional audit tags to detect duplicate audits respectively. 
  - Added “fwUrlMethod extension to the device profile to report when MT20W FW accepts a full FW url instead of the path only. 
1.592/1/2018- Added “getAuditNoErase” extension to the device profile for devices which support the functionality to provide audits to the BLE Host without deleting the audits from the edge device’s internal memoryT. Holt
1.602/5/2018- Added wording around deleteAll, delete, update, add, all being required tags inside of the db tag.T. Holt
1.612/9/2018- Added tag “invCrdAudEn” to the modifiable parameters section for the new Audit ID featureT. Holt
1.623/2/2018- Fixed value “Undog” to reflect real capitalization “undog”T. Anfield
1.633/27/2018- Added HMAC related object “genPrmtrs ´and “hmacData”M. Nichols
1.643/28/2018- Added New Access Point Config JSON for SSID change featureA. Paul
1.654/2/2018- Modified section 4.2.3 and added section 4.2.5 for site survey featureA. Paul
1.664/5/2018- Updated retrievable parameters (2.7.2.2) for Wi-Fi Call In Re-Try Mechanism tags and minor note on kyIndx tag (2.10)A. Paul
1.674/20/2018- Updated Section 2.7.2.1 Device Profile values for tag “baseType”A. Paul
1.684/23/2018- Updated review comments for “dvcProfile”, “kyIndex”A. Paul
1.694/24/2018- Changed “wiFiTest” back to “WiFiTest” as per review commentsA. Paul
1.704/26/2018- Added JSON tag to modifiable and retrievable parameters for the Audit ID Enable Feature “audIDEn”T. Holt
1.714/30/2018- Updated definition of tag "invCrdAudEn" in section 2.7.1 to match section 2.7.2.2A. Paul
1.724/30/2018- Updated "auditId" tag for duplicate audits feature in Audit Trail Reporting.A. Paul
1.735/7/2018- Updated for JSON tag standard in section 2.7.1 and 2.7.2.1A. Paul
1.746/15/2018- Updated ASCII characters limit < 0x7F (section 2.0), actDtTm & expDtTm (section 2.3) and Wi-Fi max pwd length value <= 63 (sections 2.7.1, 2.7.2.2, 2.10).A. Paul
1.756/25/2018- Formatting update for ENGAGE 6.1 ReleaseT. Holt
  - Section 2.7.2.2 updated to remove rsiPrmtrs for stand-alone and IP configured devices running ENGAGE 6.1 and later firmware. 
  - Updates to example JSON to remove model “mdl” from configurable items. 
  - Misc updates to example JSON for clarity. 
  - Clarification for nxtDbVerTS and dbDwnldTm as they are not children of the “db” tag when being set from the host 
1.767/24/2018- Moved “wifiDwnldRtyTmIntv” and “wifiDwnldRtyCnt” from the parent tag “wifiStngs” to the parent tag “lockPrmtrs” in the retrievable parameters section (2.7.2).T. Holt
1.778/16/2018- Updated device profile basetype value for Control from “sc” to “be467” and device profile for mt20w full urlA. Paul
1.7811/05/2018- Added new device profile Extension Key “usbMode” and relevant values (section 2.7.2.1).S. Hegde
  - Added new tags “commMode” and “initTS” as part of the “lockPrmtrs” parent Tag in the Device parameters (section 2.7.2.2) and Modifiable parameters (section 2.7.1). 
1.7901/07/2019- updates for 1.1 projectsJ. Evenson
1.8003/12/2019- updating exclusions column with MTB and MTKB, GW Firmware Address URL tag changed to fwurlR. Verde
1.8104/22/2019- updated tagsR. Verde
1.8204/25/2019- Removed Table of Contents in Markdown, renumbered tables and separated JSON Data Structures (Published Content) from internal only material. Created a second document: JSON Data Structures - INTERNAL CONTENT ADDENDUM.A. Clark
1.8304/30/2019- Moved bleCredEn, bleCredRng and bleCredPerf to lockPrmtsR. Verde
1.8405/01/2019- Updated name of LE 2.0 devices to match Marketing direction. (i.e. From LEMSB to LEBMS)M. Dexter

Proprietary and Confidential, © 2019 Allegion™

Introduction

Abbreviations Used In This Document 
410-IPDevice, linked to a Gateway equipped with an Ethernet connection
BLEBluetooth Low Energy
dbDatabase
DbmDatabase Manager
ENGAGE™Connectivity Platform Technology
JSONJava Script Object Notation
NDE, NSchlage ENGAGE Wireless Cylindrical Lock
NDEBSchlage ENGAGE Wireless Cylindrical Lock with BLE Credential capability
LE, LSchlage ENGAGE Wireless Mortise Lock
LEBSchlage ENGAGE Wireless Mortise Lock with BLE Credential capability
SCSchlage Control, Schlage Deadbolt / Interconnected Lock (with ENGAGE)
SCB, be467b, fe410bSchlage Control, Schlage Deadbolt / Interconnected Lock (with ENGAGE) with BLE Credential capability
MTB, MTKBSchlage Multi-Tech Credential Readers with BLE Credential capability
RMRU, RVon Duprin E-Dog Exit Device (with ENGAGE) Base Device Type
RMRemote Monitoring – RMRU Variant Supporting Sensors Only
RURemote Undogging – RMRU Variant Supporting Sensors and Undogging
CTE, CSchlage ENGAGE Controller
RTACReal-Time Access Control Service
URIUniform Resource Identifier
URLUniform Resource Locator
TBDTo Be Determined

JSON Data Structures

The communication protocol that is used to transfer data directly between the ENGAGE family of devices and the database host device is based on the JSON file format. The database host can be any device that connects to an ENGAGE device through a WiFi or Bluetooth Low Energy (BLE) connection.

This section defines all possible JSON tags that are used to configure an ENGAGE device, however tags are not applicable to all system configurations or devices. Tags which are utilized only in either the ENGAGE Gateway or ENGAGE API may be defined only in the ENGAGE – SAM API Integration documents.

Within the data structure tables, there are parent tags which do not include any data elements. Parent tags are implemented because they allow for the re-use of common tag names within a different parent tag context. An example of a common tag name is the tag “days”. This tag is common to the credential schedule and auto unlock parent tags. Another example is within the user records data structure. The “add”, “update” and “delete” parent tags share parameters that are specific elements with an individual user record. Parent tags within the tables are shown in Bold Text to differentiate from Child records.

For information regarding the JSON standard, the web site www.json.org contains many helpful links. The JSON specification can also be found at this link: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf.

Device Messages

There are four (4) main categories for JSON data structures that are sent to and from a host system (access control panel or SW system) and the security device located at the entryway (lock or other device). These categories are:

  1. Database
  2. Configuration
  3. Audit Trail
  4. Asynchronous Events / Alerts

Data transfers between a host and device will occur within a “session”. The session contains data that is formatted to the JSON specification. The JSON “files” are sent over BLE or WiFi to an embedded device that has limited RAM. As a result, the JSON data files are written to the lock’s flash memory and parsed after the data transfer has completed.

NOTE: ENGAGE Edge devices support only standard English language ASCII characters less than 0x7F.

Database Overview

During a connected event when a device is either requesting a database update from the host directly over WiFi or when the database is being updated via BLE, the device can receive a database update. The database received by the device can contain user records, credential schedules, holidays, and auto unlock data sent by the host.

The database consists of several different sub-components. The sub-components are user records, holidays, user schedules and auto unlock events. The parent tag of the database is expressed with the JSON “db” tag.

From these sub-components, only individual user records can be modified during a database update. This is accomplished through the “deleteAll, “delete”, “update” and “add” tags.

If the holidays, user schedules or auto unlock records need to be added or updated, the records should be sent as a whole. For these records, no individual records can be deleted or updated. When the holidays or auto unlock records need to be completely erased from the lock, the tag is sent with an empty “[ ]” collection. (i.e. “holidays”: [ ] or “autoUnlock”: [ ])

When a database update occurs for devices with user credential capabilities, at least one credential schedule must always be sent with the default schedule of access 24 hrs x 7 days / week. An empty collection for credential schedules is not possible. If the host fails to send the default 24x7 credential schedule, even valid credentials will not gain access.

Configurations can also be included with the database but they use a separate JSON parent tag structure.

Database Request Records

The “nxtDbVerTS” tag is used to keep the host synchronized with the ENGAGE device. This timestamp is inserted into the URL by the ENGAGE device on each database request. When the ENGAGE device requests a database for the very first time, it does so with respect to a value of “0” for the “nxtDbVerTS” tag. The host responds by sending an initial database, and it includes an updated value for the “nxtDbVerTS” tag. When the lock makes the next database request, it includes the updated nxtDbVerTS in the URL. This process continues until a device reset occurs.

If the ENGAGE device is a networked offline device, the host must include in the database records the specific time that the device will request the next database. This is accomplished through the “dbDwnLdTm” database download time. See Table 1.

Table 1: Database Download Records

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
Database Download TimedbDwnLdTmString /14YYYYMMDDHHMMSS – “20140704030000” July 4, 2014, 3:00:00 amSC, MTB, MTKB
Next Database Version Time StampnxtDbVerTSString/18Hexadecimal value, that starts with 0x, followed by 16 hex digits. (i.e. “0x08d16357eef73a69” )MTB, MTKB

User Records

User records come to the device through a “new” or an “updated” database. This ability is controlled through the “deleteAll” tag. When the “deleteAll” tag value is set to “1”, the device gets a new user database. When this value is set to “0”, the device gets an update to the existing user database.

There are instances when a completely new database is sent to the device. This happens under two conditions. When the:

  • ENGAGE device is programmed for the very first time.

  • Host device determines that the differences between the device’s existing database and the new database are too numerous.

When the host sends user records to the device, the records are grouped in terms of user records that will be deleted, updated, or added to the device. The order in which these records are sent from the host must be in that same order: delete, update and add. All four of the tags (deleteAll, delete, update, add) must be included inside the db tag, even if there is no applicable user record changes to the respective tag. When user records need to be updated within the ENGAGE device, it is logical that the device has knowledge of which records need to be deleted before updating and adding new user records.

For the purposes of updating a user record, the entire user record is sent from the host. The record includes data that needs to be updated along with data that does not need to be updated.

When an individual user record needs to be deleted, only the primary credential ID and primary credential type is sent as the identifier for that record.

A user record describes the parameters associated with each user of the access control device. A complete user record is delimited with several different JSON tags. The individual tags within a User Record are described in Table 2.

The order defined in the usrRcrd tag defines the searching order for the lock. As user records are modified, these are appended to the devices database.

The credential records must be encrypted as specified in the Schlage ENGAGE Sort & Encryption document.

Table 2: User Record

TagJSON TagType/Length (ASCII bytes)ValueDevice Exclusions
Database BlockdbString/2N/A 
User Record BlockusrRcrdString/7N/ARMRU, MTB, MTKB
Delete AlldeleteAllInt/11 = Delete entire existing database 0 = Do not delete entire existing databaseRMRU, MTB, MTKB
Delete User RecorddeleteString/6N/ARMRU, MTB, MTKB
Update User RecordupdateString/6N/ARMRU, MTB, MTKB
Add User RecordaddString/3N/ARMRU, MTB, MTKB
UserIDusrIDUnsigned Int /71-1,048,575 record number identifierRMRU, MTB, MTKB
ADA enableadaEnInt/10 = ADA Disabled 1 = ADA EnabledSC, RMRU, MTB, MTKB
Credential FunctionfnctnString/8“norm”, “freeze”, “toggle”, “passThru”, “lockDown” “oneTm” “dogd” “suprv” “delAlrm” “ctAux” “ctMnAux” “ctMnAuxToggle” “ctMnAuxPassThru” “ctAuxToggle” “updtFrmSvr” “updtFrmSvrNrm” “blocked”RMRU, MTB, MTKB See Appendix A, Section 5.1 for per device compatibility
Credential SchedulecrSchArray of Unsigned Int/2s1 through N, where N is the maximum number of credential schedules the device allows. At a minimum, a user record will have a credential schedule of “[1]”, which means the credential will have 24-7 access.RMRU, MTB, MTKB
Activation Date, TimeactDtTmString /14YYYYMMDDHHMMSS – “20140706130530” July 6, 2014, 1:05:30 pm. Minimum date/time is 20100101000000 Note: All devices have resolution to hours.RMRU, MTB, MTKB
Expiration Date, TimeexpDtTmString/14YYYYMMDDHHMMSS – “20140924150000” Sept 24, 2014, 3:00:00 pm. Minimum date/time is 20100101000000 Note: All devices have resolution to hours. The recommended value for no expiration is “21351231235959”RMRU, MTB, MTKB
Primary CredentialprimeCrString/25May need 200 bits = 25 bytes of data. Credential data in hexadecimal format. The contents of this tag must be encrypted. See ENGAGE Sort & Encryption document for more information.RMRU, MTB, MTKB
Primary Credential TypeprCrTypString/7“card”,”pin”,”biomtrc”,"ble"RMRU, MTB, MTKB
Secondary CredentialscndCrString/25Credential data in hexadecimal format. The contents of this tag must be encrypted. See ENGAGE Sort & Encryption document for more information.SC, RMRU, MTB, MTKB
Secondary Credential TypescndCrTypString/7“card”,”pin”,”biomtrc” ,"ble"SC, RMRU, MTB, MTKB

Credential Schedule Records

Credential Schedule Records are used to describe a set of times when an individual credential can be granted access. These times are described by a specific day of the week and time, not by a specific calendar date. These records are stored in the device and are applied to individual user records through the “Credential Schedule” tag within individual user records.

Table 3 describes each of the fields associated with a credential schedule.

Devices with Credential Readers

In order for a credential to have access to a device, at least one credential schedule must be programmed into the device. If an existing credential schedule needs to be deleted from the lock, then the host must send at least one credential schedule that allows access 24 hrs / day, 7 days a week.

The credential schedules must be explicitly defined for every database structure provided to the lock, even if previously defined.

Table 3: Credential Schedule Record

TagJSON Short TagType/Length (ASCII bytes)ValueDevice Exclusions
Database BlockdbString/2N/A 
Credential Schedule BlockschedulesString/9N/ARMRU, MTB, MTKB
DaysdaysArray of String/2s[ “Su”, “Mo”, “Tu”, “We”, “Th”, “Fr”,“Sa” ]RMRU, MTB, MTKB
Start HourstrtHrUnsigned Int/2Hour, where a start hour (Hr) can be 0-23.RMRU, MTB, MTKB
Start MinutestrtMnUnsigned Int/2Minute, where Minute can be 0-59.RMRU, MTB, MTKB
LengthlngthUnsigned Int/4Duration of the schedule, in minutes (decimal), (1 – 1439).RMRU, MTB, MTKB
   Value 1439 represents 23:59:59. All other values represent the minute. Value 1438 represents 23:58:00. Value 479 represents 7:59:00. 

Holiday Records

Holiday records are events that describe when a device should be put into a special state based upon a certain calendar date and time, overriding an auto-unlock schedule. A secured holiday puts the device into the normally secured state. A passage holiday puts the device into a normal passage state. The restricted secured holiday puts the device into a secured state, but the device only accepts 2 card types in this state, pass-through and freeze.

When in a restricted secured state if a freeze credential is presented, the device transitions from restricted secured to a normal secured state – allowing the expanded credential types to be allowed at the door. To restore the device to the restricted secured state, a freeze credential must be presented two more times; (the first takes the device to frozen secured state, the second triggers a schedule look-up causing the device to resume restricted secured state). The pass-through credential functions as expected, momentarily unlocking the door.

In the event that the existing holiday record needs to be deleted from the device, and not replaced with a new set of holidays, then an ID empty tag of “[]” is sent from the host.

Holiday records must be explicitly defined for every database structure provided to the device, even if previously defined.

Table 4 describes each of the fields associated with a holiday record.

Table 4: Holiday Record Fields

TagJSON Short TagType/Length (ASCII bytes)ValueDevice Exclusions
Database BlockdbString/2N/ASC, MTB, MTKB
Holiday BlockholidaysString/8N/ASC, MTB, MTKB
Start Date / TimestrtDtTmString /14YYYYMMDDHHMMSS – “20131224000000”, Dec 24, 2013, 00:00:00 ( Midnight ) NOTE: NDE has resolution to the minute.SC, MTB, MTKB
End Date / TimeendDtTmString /14YYYYMMDDHHMMSS – “20131227080000” Dec 27, 2013, 8:00:00 am NOTE: NDE has resolution to the minute.SC, MTB, MTKB
ActionactionString/9“pass”, “sec”, “rstrctSec”*SC, MTB, MTKB rstrctSec not supported on RMRU

Auto Unlock Records

Auto unlock records are device specific events that describe when the device should be put into secure or passage mode based upon a specific day of the week and time. An auto-unlock record only describes when the device should change its current state. In order to put the device back to its original state, an additional auto unlock record is required. For many doors, a good “rule of thumb” is to have an auto-lock schedule, scheduled for midnight. This way if someone toggles a device unlocked during the day, the door will relock itself at midnight.

In the event that the existing auto unlock record needs to be deleted from the device, and not replaced with a new set of auto unlockevents, then an ID empty tag of “[ ]” is sent from the host.

Auto unlock must be explicitly defined for every database structure provided to the device, even if previously defined.

Table 5 describes each of the fields associated with an auto unlock record.

Table 5: Auto Unlock Record Fields

TagJSON Short TagType/Length (ASCII bytes)ValueDevice Exclusions
Database BlockdbString/2N/ASC, MTB, MTKB
Auto Unlock BlockautoUnlockString/10N/ASC, MTB, MTKB
ActionactionString/4“pass” “sec”SC, MTB, MTKB
Start HourstrtHrUnsigned Int/2Hr, where HR can be 0 - 23SC, MTB, MTKB
Start MinstrtMnUnsigned Int/2Min, where Min can be 0 - 59SC, MTB, MTKB
DaydaysArray of String/2s[ “Su”, “Mo”, “Tu”, “We”, “Th”, “Fr”, “Sa” ]SC, MTB, MTKB

Device Parameters

This section describes the data structures for modifying and retrieving device parameters.

Modifiable Parameters

Some device parameters can be changed by a host device. When modifying (configuring) parameters, a host sends a JSON data structure to the device that contains a set of configuration parameters. Table 6 shows a complete list of the JSON data tags and tag values that can be modified by a host. Some of the parameters are device specific and may not apply to all devices.

Modifiable (configurable) parameters vary by each device’s capability or the specific configuration of the device.

To support a standard of JSON configurations moving into the future, the standard has been established to use “T” / “F” for configuration tags/items (to enable or disable a feature). However, because some of the currently established tags do not use this standard, the previously implemented tag types maintain their current implementation and the standard will be established for new tags implemented in the future.

See the Example of Configuration Records (JSON) section below for an example of this data structure.

Table 6 shows a listing of Modifiable (Configurable) Parameters.

Table 6: Modifiable (Configurable) Parameters

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
Configuration BlockconfigString/6N/A 
TypetypeString/6“strm” “clsrm” “office” “dorm” “apt” “prvcy”SC, RMRU, MTB, MTKB
RelockrelockUnsigned Int/3Delay time in seconds (1-30 for NDE, LE; 1-60s for SC)RMRU, MTB, MTKB
Central Decision Mode TimeoutcntrlDecTimeoutUnsigned Int/4Delay time in deciseconds (0-6540) NOTE: 0=central decision mode disabled (local decision mode enabled)NDE, LE, RMRU, CTE, MTB, MTKB, NDEB, LEB
Credential Sector NumbercredSectNumUnsigned Int/2Credential Sector Number (1-15)NDE, LE, SC, CTE, RMRU, NDEB, LEB, MTB, MTKB
Jaguar SectorsjagSectorsUnsigned Int/5Jaguar Sector Bitmask (0-65535)RMRU, MTB, MTKB
Lock IDlockIdUnsigned Int/5Door ID (0-65534) 65535 disables no tour on LE locksRMRU, MTB, MTKB
Group IDsgroupIdsUnsignedInt/5Group ID (0-65535) array with up to 16 elementsRMRU, MTB, MTKB
Door Prop DelaydoorPropUnsigned Int/3Delay time in seconds (1-255)SC, MTB, MTKB
Propped Door Delay EnabledoorPropEnString/1“T”,“F”NDE, SC, LE, RMRU, MTB, MTKB, NDEB, LEB
ADA DelayAdaUnsigned Int/3Delay time in seconds (1-255)SC, RMRU, MTB, MTKB
First Man InfirstManInInt/10=No First Man In 1= First Man InSC, RMRU, MTB, MTKB
Dog On Next ExitdneEnInt/10=Do not use Dog on Next Exit 1=Schedules Dog on Next ExitNDE, SC, LE, CTE, MTB, MTKB, NDEB, LEB
Battery Fail StatebattFailString/4“asIs”, “safe, “sec”SC, RMRU can only operate as sec, CTE, MTB, MTKB
Blink Interior LED when lockedblinkIntLedString/1“T” = enabled , “F” = disabled (default)NDE, SC, CTE, MTB, MTKB
Privacy Rapid blinkrapidBlinkString/1“T” = enabled , “F” = disabled (default)NDE, SC, RMRU, CTE, MTB, MTKB
IPB Audit Enable / DisableipbAuditEnableString/1“T” = enabled , “F” = disabled (default)NDE, SC, LE, RMRU, CTE, MTB, MTKB
Daylight Savings TimedstEnableInt/10=DST not observed 1=DST observedMTB, MTKB
DST StartdstStartString/4Hour that clocks are moved ahead by 1 hr. 3=standard month start (1=Jan,…)            0=standard day of week start, 0 = Sun…. 2=standard week # start (1=1st,..5=last) 2=standard hour start US default is 3022MTB, MTKB
DST EnddstEndString /4Hour that clocks are moved behind by 1 hour. B=daylight month start 0=daylight day of week start 1=daylight week # start 2=daylight hour start US default is B012MTB, MTKB
Clock TimertcTimeString /14“YYYYMMDDHHMMSS” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) HH = Hour ( 00 – 23 ) MM = Minutes ( 00 – 59 ) SS = Seconds ( 00 – 59 ) Example: “20140710145030” = July 10, 2014, 2:50:30 pm. NOTE 1: this message affects any date/time event (including FW upgrade) so it needs to precede the fwDownldTm and fwImplTm tags. NOTE 2: in order to limit flash write operations, the current rctTime of a device will not be changed if it is already within +/- 5mins of the specified time. For ENGAGE 6.0 Firmware and later this value has been changed to 1 minute for all ENGAGE products.MTB, MTKB
Immediate WiFi Alert EnablewifiAlertEnString/1“T” = enabled (default), “F” = disabled, “S” = limit immediate alert reporting to the selection made in wifiAlertSel. NOTE: Conflicting settings between this tag and wifiAlertSel (e.g. a list of alerts specified in wifiAlertSel but wifiAlertEn is “F”) will result in the last tag processed being used.SC, MTB, MTKB
Individual WiFi Immediate Alert SelectionwifiAlertSelArray of String/6sSee separate document for Audit & Alert Definitions (Alert Type Only)SC, MTB, MTKB
Firmware AddressfwurlString/64Max 64 characters NOTE 1: The config PUT from the lock presents a different tag “fwUrl” than what it consumes “fwurl”. NOTE 2: NDE Firmware revisions < 02.06.12 only support a fixed url endpoint: http://<host>/api/firmware/latest It is suggested that a symbolic link or copy of the latest NDE binary firmware be placed at this endpoint if supporting older NDE firmware versions <02.06.12. When using an ENGAGE mobile application to connect to an NDE lock running these older firmware versions, the ‘Update Firmware’ option will be visible and will command these locks to the fixed endpoint for ease of upgrade and to allow updating of a lock to a firmware revision that supports root certificate change.SC, MTB, MTKB
Firmware download TimefwDwnldTmString /14YYYYMMDDHHMMSS – “20140527040000” May 27, 2014, 4:00:00 am Value of “0” will result in immediate download. NOTE: All revisions of NDE, LE, and SC only support a value of “0” (immediate download) currently.MTB, MTKB
Firmware Implement/Update TimefwImplTmString /14YYYYMMDDHHMMSS – “20140603030000” June 3, 2014, 3:00:00 am Value of “0” will result in immediate update/implement. NOTE: Prior to ENGAGE 6.0 revisions of NDE, LE, and SC only support a value of “0” (implement immediately) currently. ENGAGE 6.0 and later process this tag as expected.MTB, MTKB
DPS Audits EnabledpsEnString/1“T”,“F”SC, MTB, MTKB
Beeper EnbprEnString/1“T”,“F” 
Reader SensitivityrdrSenseString/4"norm", "high", "max"SC, RMRU, CTE, MTB, MTKB
Prox Config HIDproxConfHIDString/1“T”,“F”SC, SCB, RMRU
Prox Config GECASIproxConfGECASIString/1“T”,“F”SC, SCB, RMRU
Prox Config GE4001proxConfGE4001String/1“T” = 4001, “F” = 4002SC, SCB, RMRU
Prox Config GE4002proxConfGE4002String/1“T” = 4002,“F” = 4001SC, SCB, RMRU
Prox Config AWIDproxConfAWIDString/1“T”,“F”SC, SCB, RMRU
Smart Card 14443 UIDuid14443String/1“T”,“F”SC, SCB, RMRU
Smart Card 14443 MiFaremi14443String/1“T”,“F”SC, SCB, RMRU
Smart Card 14443 MiFare Plusmip14443String/1“T”,“F”RMRU
Smart Card 14443 NOCnoc14443String/1“T”,“F”RMRU
Smart Card 15693 iClass SEiCls15693String/1“T”,“F”NDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
Smart Card 15693 UIDuid15693String/1“T”,“F”SC, SCB, RMRU
Smart Card iClass UID 40 bit CSNiClsUID40bString/1“T”,“F”SC, SCB, RMRU, CTE
PIV ConfigurationpivCnfgString/11"disbld","75bPIV", "58bTWIC_CAC", ”14443PIV200b”,"64bBCD_TWIC","83bTWIC_CAC", "66bTWIC_CAC", "64bTWIC", "91bTWIC_CAC", "40bBCD", "40bRevBCD", "64bBCD", "64bRevBCD", "128bBCD", "128bRevBCD", "58bAMAG"NDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
iClass FormatiClsFrmtString/11“disbld”, “64bCSN”RMRU
BLE Credential EnablebleCredEnString/1“T”, “F”RMRU, NDE, LE, SC
BLE Credential RangebleCredRngString/5“short”, “long”RMRU, NDE, LE, SC
BLE PerformanceblePerfString/4“norm”, “max”RMRU, NDE, LE, SC, MTB, MTKB, CTE
Mag Card Reader Track 1 Enablemagtrk1String/1“T”,“F”NDE, SC, LE, RMRU, CTE, MTB, MTKB, NDEB, LEB, SCB
Mag Card Reader Track 2 Enablemagtrk2String/1“T”,“F”NDE, SC, LE, RMRU, CTE, MTB, MTKB, NDEB, LEB, SCB
Mag Card Reader Track 3 Enablemagtrk3String/1“T”,“F”NDE, SC, LE, RMRU, CTE, MTB, MTKB, NDEB, LEB, SCB
Mag Card Reader Low Power EnablemagLwPwrEnString/1“T”,“F”NDE, SC, LE, RMRU, CTE, MTB, MTKB, NDEB, LEB, SCB
Standby LED ColorledStbyColorString/5"off", "red", "green", "amber"NDE, NDEB, LE, LEB, RMRU, SC, SCB
Standby LED StateledStbyStateString/5"solid", "flash"NDE, NDEB, LE, LEB, RMRU, SC, SCB
Credential Read LEDledCredRdString/5"none", "green"NDE, NDEB, LE, LEB, RMRU, SC, SCB, CTE
Backlight TimeoutbckLghtTmOutUnsigned Int/20-15, 0 = disabledNDE, NDEB, SC, SCB, LE, LEB, RMRU, MTB, CTE, MTB, MTKB
Keypad Output FormatkeypadOutputString/13"4BitNP", "8BitNP", "Galaxy26A", "PCSC4", "PCSC5"NDE, NDEB, SC, SCB, LE, LEB, RMRU, MTB, CTE
Keypad facility codekpFclCodeUnsigned Int/30-255NDE, NDEB, SC, SCB, LE, LEB, RMRU, MTB, CTE
Number of keys to buffer/cachekpBuffCacheUnsigned Int/20-15NDE, SC, LE, RMRU, CTE, MTB, MTKB, NDEB, LEB
Keystroke TimeoutkeystrokeTOUnsigned Int/20-15, 0 = disabledNDE, SC, LE, RMRU, CTE, MTB, MTKB, NDEB, LEB
PIN LengthpinLengthUnsigned Int/23-16, default 6NDE, SC, LE, RMRU, MTB, MTKB, NDEB, LEB
PIN enable (ignore keypad)pinEnString/1“T”,“F”NDE, SC, LE, RMRU, MTB, MTKB, NDEB, LEB
Clock and Data FormatrdrOutFmtString/8“dsbld”, "format1", "format2", "format3", "format4", "format5", "format6", "format7", "format8", "format9", "format10", "format11", "format12"NDE, NDEB, SC, SCB, LE, LEB, RMRU, MTB, MTKB, CTE
Reader output FormatrdrOutputString/8“wiegand", "clkndata”NDE, NDEB, SC, SCB, LE, LEB, RMRU, CTE
Anti-Tailgate (immediate relock on door close)immRelockEnString/1“T”,“F”NDE, SC, LE, RMRU, NDEB, LEB, MTB, MTKB
410-IP Communication Failsafe ModegatewayCommFailString/4“asIs”, “sec”, “safe”NDE, SC, LE, CTE, RMRU does not support “safe”, MTB, MTKB, NDEB, LEB
Tamper Cover Removal Failsafe ModetamperFailString/4“asIs”, “sec”, “safe”NDE, SC, LE, CTE, RMRU does not support “safe”, MTB, MTKB, NDEB, LEB
Invalid Card Presented AuditinvCrdAudEnString/1“F”=Do not create an audit for invalid card presentations (Default). “T”= Create an audit for invalid card presentations. NOTE: if this configuration is enabled the edge device audits should be checked regularly to ensure that the edge device audit buffer is not inadvertently filled with invalid card presentation audits.RMRU, MTB, MTKB
WiFi Download Retry Time IntervalwifiDwnldRtyTmIntvUnsigned Int/45-1440 Default Value Setting is 1440 If WiFi event fails, this setting is the number of minutes after the failure that the device should re-try the WiFi event. The retry will continue wifiDwnldRtyCnt times every wifiDwnldRtyTmIntv minutes.SC, MTB, MTKB
WiFi Download Retry CounterwifiDwnldRtyCntUnsigned Int/31-250 Default Value Setting is 1 If WiFi event fails, this setting is the number of times after the failure that the device should re-try the WiFi event. The retry will continue wifiDwnldRtyCnt times every wifiDwnldRtyTmIntv minutes.SC, MTB, MTKB
Invalid Card Presented AuditinvCrdAudEnString/1“F”= Do not create an audit for invalid card presentations (Default). “T”= Create an audit for invalid card presentations. NOTE: if this configuration is enabled the edge device audits should be checked regularly to ensure that the edge device audit buffer is not inadvertently filled with invalid card presentation audits.MTB, MTKB
Audit ID EnableauditIDEnString/1“F”= The lock will not send the new unique audit identifier with the audit json (default). “T”= The lock will send the new unique audit identifier with the audit JSONMTB, MTKB
New Access Point ConfigapCfgNewString/6N/ASC, MTB, MTKB
New AP Config EnableapCfgNewEnString/1“T” = enables new Access Point Config. “F” = disables new Access Point Config (default option).SC, MTB, MTKB
New SSIDssidNewString/32Max 32 charactersSC, MTB, MTKB
New AP PasswordpsswdNewString/64Max 63 charactersSC, MTB, MTKB
New User NameusrNmNewString/16Max 16 charactersSC, MTB, MTKB
New WiFi SecuritywifiSecNewString/7“prsnl”, “entrprs”, “open”, ”wep”SC, MTB, MTKB
Config Start TimeapCfgNewStrtTmString /14“YYYYMMDDHHMMSS”SC, MTB, MTKB

Retrievable Parameters

When a host makes a request to the device for information that resides in the device, it receives all of the retrievable parameters for that device at that time.

Device Profile

Later firmware versions of ENGAGE devices include a section that defines the type and any special type variances (called extensions) supported by the device as part of a dvcProfile block contained at the beginning of the config block.

To support a standard of JSON configs moving into the future, the standard is for all device profiles to be implemented as integers. However, because some of the currently established tags do not use this standard, the previously implemented tag types maintain their current implementation and the standard will be established for new tags implemented in the future.

Table 7: Currently Established Non-Integer Tags

TagShort TagType/Length (ASCII bytes)Value
Device ProfiledvcProfileSection HeadingN/A
Base TypebaseTypeString/8“rmru”, “nde”, “le”, “mt20w”, “cte”, “be467”, “gwe”, "ndeb", "leb", "be467b", "mtb", "mtkb15"
ExtensionsextArrayArray of structures of following types:
Extension’s namekeyString/15See table below for Extension key, custom argument (value) combinations
Extension custom argumentvalueString/15 

Extensions and their supported custom arguments.

Extension keyExtension valueDevice Associated
undogemptyrmru
WiFiTest0 = unsupported; 1 = Full Update Server; 2 = Fast Connection Attemptnde, le, rmru, mt20w, cte, ndeb, leb
jsonHmac0 = unsupported; 1 = HMAC Rev 0 Supportednde, le, sc, rmru, cte, ndeb, leb, scb
dupAuditDet0 = unsupported; 1 = Duplicate Audit Detection supported (auditId provided with audit JSON)nde, le, sc, rmru, cte, ndeb, leb, scb
fwUrlMethod0 = unsupported; 1 = Full URL Sent (Pre-ENGAGE 6.2 firmware will continue support of "URL Path only"); 2 = URL Path only (Server name or address removed)mt20w
getAuditNoErase0 = unsupported; 1 = Retrieve Audits without Erase supportednde, le, sc, rmru, cte, ndeb, leb, scb
gweSiteSurvey0 = unsupported; 1 = Site Survey JSON Definition Version 1gwe
newAPCfg0 = unsupported; 1 = New Access Point Configuration Supportednde, le, rmru, cte, ndeb, leb
usbMode0 = unsupported; 1 = supports USB communication modemt20w
crdRdr0 = unsupported; 1 = supports Card Reader configscte
bleRdrCfg0 = unsupported; 1 = supports BLE Credential reader configscte
bleCred0 = unsupported; 1 = supports BLE Credential Configurationndeb, leb, mtb, mtkb15, scb
ipbEnabled0 = unsupported; 1 = supports IPB Configuration Supportedndeb
keyPad0 = unsupported; 1 = supports Keypad configurationmtkb

External Device Parameters

Table 8 shows a complete list of all the JSON data tags and values that can be read by an external device. Some of the retrievable parameters are device specific and may not apply to all devices.

ENGAGE devices report all retrievable parameters in one large block, and include some parameters that may not directly apply to the device or its mode of operation. For example; RSI protocol capable devices might report RSI parameters when the device is not configured for RSI protocol operation.

See the Device Settings section for an example of this data structure.

Table 8: Retrievable Parameters

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
Battery VoltagesbattVString/5N/AMTB, MTKB
MainmainString/5“x.x” to “xx.xx”CTE, MTB, MTKB
LithiumliString/5“x.x” to “xx.xx” (This is always reported as a value of 0 for NDE, LE, and RMRU) when reported from the GWE.CTE, SC, MTB, MTKB
Line VoltageslineVString/5N/A 
MainmainString/5“x.x” to “xx.xx”NDE, LE, SC, RMRU, NDEB, LEB
Power inputpowerString/4“poe”, “poe+”, “line”NDE, LE, SC, RMRU, NDEB, LEB, MTB, MTKB
Firmware VersionsfwVerString/5N/A 
LocklockString/8“xx.xx.xx” 
MainmainString/8“xx.xx.xx” 
Credential ReadercredRdrString/8“xx.xx.xx”SC, RMRU
Bluetooth ModulebleString/8“xx.xx.xx” 
WiFi ModulewifiString/8“xx.xx.xx”SC, MTB, MTKB
Main BootloadermainBlString/8“xx.xx.xx” 
Credential Reader BootloadercredRdrBlString/8“xx.xx.xx”SC, RMRU, CTE
WiFi MAC AddressmacAdrString/17“xx.xx.xx.xx.xx.xx”SC, MTB, MTKB
Safe Mode Recovery FW versionrecoveryFwVerString/8“xx.xx.xx”SC, MTB, MTKB
Ethernet moduleethernetString/8“xx.xx.xx”SC, RMRU, LE, NDE, NDEB, LEB, MTB, MTKB
Ethernet module bootloaderethernetBlString/8“xx.xx.xx”NDE, SC, RMRU, LE, NDEB, LEB, MTB, MTKB
Ethernet MAC AddressethernetMacAdrString/17“xx.xx.xx.xx.xx.xx”NDE, SC, RMRU, LE, NDEB, LEB, MTB, MTKB
WiFi SettingswifiStngsString/8N/ASC, MTB, MTKB
SSIDssidString/32Max 32 charactersSC, MTB, MTKB
AP Password / Security KeypsswdString/64Max 63 charactersSC, MTB, MTKB
User NameusrNmString/16Max 16 charactersSC, MTB, MTKB
WiFi SecuritywifiSecString/7“prsnl”, “entrprs”, “open”, “wep”SC, MTB, MTKB
Key IndexkyIndxUnsigned Int/11,2,3,4SC, MTB, MTKB
Discovery TypedscvryTypString/6“ipAddr”, “dmnNm”, “srvcNm”SC, MTB, MTKB
Secure ConnectionscrCnnString/5“http”, “https”SC, MTB, MTKB
IPIpString/15“xxx.xxx.xxx.xxx”SC, MTB, MTKB
IP DNS ServiceipDNSString/64Max 64 charactersSC, MTB, MTKB
Alternate IP DNS ServicealtDNSString/64Max 64 charactersSC, NDE, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
New Access Point ConfigapCfgNewString/6N/ASC, MTB, MTKB
New AP Config EnableapCfgNewEnString/1“T” = enables new Access Point Config. “F” = disables new Access Point Config (default option).SC, MTB, MTKB
New SSIDssidNewString/32Max 32 charactersSC, MTB, MTKB
New AP PasswordpsswdNewString/64Max 63 charactersSC, MTB, MTKB
New User NameusrNmNewString/16Max 16 charactersSC, MTB, MTKB
New WiFi SecuritywifiSecNewString/7“prsnl”, “entrprs”, “open”, ”wep”SC, MTB, MTKB
Config Start TimeapCfgNewStrtTmString /14“YYYYMMDDHHMMSS”SC, MTB, MTKB
Lock ParameterslockPrmtrsString/8N/A 
NamenameString/32“xxxx….….xxxx” 
ModelmdlString/6“nde”, “be467”, “fe410”, “lems”, “lemb”, “lemd”, “rm”, “ru”, “cte”, "ndeb", "lebms", "lebmb", "lebmd", "be467b", "fe410b", "mtb11", "mtb15", "mtkb15" 
Lock Operation ModelckModeString/8“null”, “200”, “210”, “310”, “410rsi”, “410ip”MTB, MTKB, 200 mode not supported on RMRU
Lock Serial NumberlckSnString/16“xxxx….….xxxx” 
Main Serial NumbermainSnString/16“xxxx….….xxxx” 
Mfg DatemfgDtString/8“YYYYMMDD” YYYY = Year MM = Month (01 – 12) DD = Day (01 – 31) Example: “20140527” means May 27, 2014 
Days In UsedaysInUseUnsigned Int/50 – 65536SC
Warranty Activation datewtyActString /14“YYYYMMDDHHMMSS” YYYY = Year MM = Month (01 – 12) DD = Day (01 – 31) HH = Hour (00 – 23) MM = Minutes (00 – 59) SS = Seconds (00 – 59) Example: “20140710145030” means July 10, 2014, 2:50:30 pmNDE, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
Hardware VersionhwVerString/6“xxxxxx” 
Clock TimertcTimeString /14“YYYYMMDDHHMMSS” YYYY = Year MM = Month (01 – 12) DD = Day (01 – 31) HH = Hour (00 – 23) MM = Minutes ( 00 – 59 ) SS = Seconds (00 – 59) Example: “20140710145030” means July 10, 2014, 2:50:30 pmMTB, MTKB
TypetypeString/6“strm” “clsrm” “office” “dorm” “apt” “prvcy”SC, RMRU, MTB, MTKB
RelockrelockUnsigned Int/3Delay time in seconds (0-254)RMRU, MTB, MTKB
Door Prop DelaydoorPropUnsigned Int/3Delay time in seconds (0-254)SC, MTB, MTKB
Door Prop Delay EnabledoorPropEnString/1“T” = enabled, “F” = disabledNDE, LE, SC, RMRU, NDEB, LEB, MTB, MTKB
ADA DelayadaUnsigned Int/3Delay time in seconds (0-254)SC, RMRU, MTB, MTKB
First Man InfirstManInInt/10=No First Man In; 1= First Man InSC, RMRU, MTB, MTKB
Dog On Next ExitdneEnInt/10=Do not use Dog on Next Exit; 1=Schedules Dog on Next ExitNDE, SC, LE, CTE, NDEB, LEB, MTB, MTKB
Battery Fail StatebattFailString/4“asIs”, “safe, “sec”SC, RMRU can only operate as sec, CTE, MTB, MTKB
Daylight Saving TimedstEnableInt/10=DST not observed 1=DST observedMTB, MTKB
DST StartdstStartString/4Hour that clocks are moved ahead by 1 hr. 3=standard month start (1=Jan,…)            0=standard day of week start, 0 = Sun…. 2=standard week # start (1=1st,..5=last) 2=standard hour start US default is 3022MTB, MTKB
DST EnddstEndString /4Hour that clocks are moved behind by 1 hour. B=daylight month start 0=daylight day of week start 1=daylight week # start 2=daylight hour start US default is B012MTB, MTKB
Next Database Download TimedbDwnldTmString /14“YYYYMMDDHHMMSS” YYYY = Year MM = Month (01 – 12) DD = Day (01 – 31) HH = Hour (00 – 23) MM = Minutes (00 – 59) SS = Seconds (00 – 59) Example: “20140527154102” means May 27, 2014, 3:41:02 pmSC, MTB, MTKB
Firmware AddressfwUrlString/64Max 64 characters NOTE: this is fwUrl though it conveys the same information as fwurl.SC, MTB, MTKB
Firmware download TimefwDwnLdTmString /14YYYYMMDDHHMMSS – “20140527040000” May 27, 2014, 4:00:00 am. Value of “0” will result in immediate download.SC, MTB, MTKB
Firmware Implement/Update TimefwImpTmString /14YYYYMMDDHHMMSS – “20140603030000” June 3, 2014, 3:00:00 am. Value of “0” will result in immediate update/implement.SC, MTB, MTKB
BLE Credential EnablebleCredEnString/1“T”, “F”RMRU, NDE, LE, SC
BLE Credential RangebleCredRngString/5“short”, “long”RMRU, NDE, LE, SC
BLE PerformanceblePerfString/4“norm”, “max”RMRU, NDE, LE, SC, MTB, MTKB, CTE
Next Database Version Time StampnxtDbVerTSString/18Hexadecimal value, that starts with 0x, followed by 16 hex digits. (i.e. “0x08d16357eef73a69”)MTB, MTKB
Immediate WiFi Alert EnablewifiAlertEnString/1“T” = enabled (default), “F” = disabledSC, MTB, MTKB
Individual WiFi Immediate Alert SelectionwifiAlertSelArray of Strings/6See separate document for Audit & Alert Definitions (Alert Type Only)SC, MTB, MTKB
Blink Interior LED when lockedblinkIntLedString/1“T” = enabled, “F” = disabledNDE, SC, CTE, MTB, MTKB
Privacy Rapid blinkrapidBlinkString/1“T” = enabled, “F” = disabledNDE, SC, RMRU, CTE, MTB, MTKB
IPB Audit Enable / DisableipbAuditEnableString/1“T” = enabled, “F” = disabledNDE, SC, LE, RMRU, CTE, MTB, MTKB
Hardware ConfigurationhwCfgString/6"ipb", "dbolt", "strm"NDE, SC, RMRU, NDEB, MTB, MTKB 
Lock IDlockIdUnsigned Int/5Door ID (0-65534) 65535 no tour disabled on LE locksNDE, RMRU, MTB, MTKB
Number of motor cycle countsnumCyclesUsigned Int/320 - 4294967295NDE, LE, RMRU, NDEB, LEB, MTB, MTKB
DPS Audit EnabledpsEnString/1“T” or “F”SC, MTB, MTKB
Database Update StatusdbUpdateStatusUnsigned Int/30=Reset/download not started. 1=JSON data Download completed. 2=DB Update Completed.SC, RMRU, MTB, MTKB
PIN LengthpinLengthUnsigned Int/23-16NDE, SC, LE, RMRU, NDEB, LEB, MTB, MTKB
PIN EnablepinEnString/1“T” or “F”NDE, SC, LE, RMRU, NDEB, LEB, MTB, MTKB
Anti-Tailgate (Immediate relock on door close)immRelockEnString/1“T” or “F”NDE, SC, LE, RMRU, NDEB, LEB, MTB, MTKB
410-IP Communication Failsafe ModegatewayCommFailString/4“asIs”, “sec”, “safe”NDE, SC, LE, CTE, RMRU does not support “safe”, NDEB, LEB, MTB, MTKB
Tamper Cover Removal Failsafe ModetamperFailString/4“asIs”, “sec”, “safe”NDE, SC, LE, CTE, RMRU does not support “safe”, NDEB, LEB, MTB, MTKB
Invalid Card Presented AuditinvCrdAudEnString/1“F”= Do not create an audit for invalid card presentations (Default). “T”= Create an audit for invalid card presentations. NOTE: if this configuration is enabled the edge device audits should be checked regularly to ensure that the edge device audit buffer is not inadvertently filled with invalid card presentation audits.RMRU, MTB, MTKB
Audit ID EnableauditIDEnString/1“F”= The lock will not send the new unique audit identifier with the audit json (default). “T”= The lock will send the new unique audit identifier with the audit JSON.MTB, MTKB
WiFi Download Retry Time IntervalwifiDwnldRtyTmIntvUnsigned Int/45-1440 Default Value Setting is 1440. If WiFi event fails, this setting is the number of minutes after the failure that the device should re-try the WiFi event. The retry will continue wifiDwnldRtyCnt times every wifiDwnldRtyTmIntv minutes.SC, MTB, MTKB
WiFi Download Retry CounterwifiDwnldRtyCntUnsigned Int/31-250 Default Value Setting is 1. If WiFi event fails, this setting is the number of times after the failure that the device should re-try the WiFi event. The retry will continue wifiDwnldRtyCnt times every wifiDwnldRtyTmIntv minutes.SC, MTB, MTKB
Communication ModecommModeString/4“usb” or “wifi”NDE, LE, SC, RMRU, CTE, NDEB, LEB, MTB, MTKB
Initial TimeStampinitTSString/14“YYYYMMDDHHMMSS”– “20140704030000” means July 4, 2014, 3:00:00 amNDE, LE, SC, RMRU, CTE, NDEB, LEB, MTB, MTKB
Reader ParametersrdrPrmtrsString/7N/ARMRU
BLE Reader NamebleRdrNameString/25“xxxx......xxxx”NDE, NDEB, LE, LEB, RMRU, SC, SCB, MTB, MTKB
Beeper EnablebprEnString/1“T” or “F” 
Reader SensitivityrdrSenseString/4"norm", "high", "max"SC, RMRU, CTE, MTB, MTKB
Days In UsedaysInUseUnsigned Int/50 - 65536SC, SCB, RMRU
Serial NumbersnString 10“xxxxxxxxxx”SC, SCB, RMRU
Hardware VersionhwVerString/6“xxxxxx”SC, SCB, RMRU
Manufacture DatemfgDtString/8“YYYYMMDD” YYYY = Year MM = Month (01 – 12) DD = Day (01 – 31) Example: “20140527” means May 27, 2014SC, SCB, RMRU
Config Card Presented Status (Read Only)configCrdPrsntdString/1“T”,“F”RMRU, SCB, SC, CTE
Prox Config HIDproxConfHIDString/1“T”,“F”SC, RMRU, SCB
Prox Config GECASIproxConfGECASIString/1“T”,“F”SC, RMRU, SCB
Prox Config GE4001proxConfGE4001String/1“T” = 4001, “F” = 4002SC, RMRU, SCB
Prox Config GE4002proxConfGE4002String/1“T” = 4002, ”F” = 4001SC, RMRU, SCB
Prox Config AWIDproxConfAWIDString/1“T”,“F”SC, RMRU, SCB
Smart Card 14443 UIDuid14443String/1“T”,“F”RMRU, SCB, SC
Smart Card 14443 MiFaremi14443String/1“T”,“F”RMRU, SCB, SC
Smart Card 14443 MiFare Plusmip14443String/1“T”,“F”SC, RMRU, SCB
Smart Card 14443 NOCnoc14443String/1“T”,“F”SC, RMRU
Smart Card 15693 iClass SEiCls15693String/1“T”,“F”NDE, SC, RMRU, CTE, LE, NDEB, LEB, MTB, MTKB
Smart Card 15693 UIDuid15693String/1“T”,“F”RMRU, SCB, SC
Smart Card iClass UID 40 bit CSNiClsUID40bString/1“T”,“F”RMRU, SCB, SC
PIV ConfigurationpivCnfgString/11"disbld","75bPIV","58bTWIC_CAC" "14443PIV200b","64bBCD_TWIC" "83bTWIC_CAC","66bTWIC_CAC" "64bTWIC","91bTWIC_CAC" "40bBCD","40bRevBCD","64bBCD","64bRevBCD","128bBCD", "128bRevBCD","58bAMAG"NDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
iClass FormatiClsFrmtString/11“disbld”, “64bCSN”SC, RMRU, SCB
Mag Card Reader Track 1 Enablemagtrk1String/1“T”,“F”NDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
Mag Card Reader Track 2 Enablemagtrk2String/1“T”,“F”NDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
Mag Card Reader Track 3 Enablemagtrk3String/1“T”,“F”NDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
Mag Card Reader Low Power EnablemagLwPwrEnString/1“T”,“F”NDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
Standby LED ColorledStbyColorString/5"off", "red", "green", "amber"NDE, NDEB, LE, LEB, RMRU, SC, SCB
Standby LED StateledStbyStateString/5"solid", "flash"NDE, NDEB, LE, LEB, RMRU, SC, SCB
Credential Read LEDledCredRdString/5"none", "green"NDE, NDEB, LE, LEB, RMRU, SC, SCB, CTE
Backlight TimeoutbckLghtTmOutUnsigned Int/20-15, 0 = disabledNDE, NDEB, SC, SCB, LE, LEB, RMRU, MTB, MTKB, CTE
Keypad Output FormatkeypadOutputString/10"4BitNP", "8BitNP", "Galaxy26A", "PCSC4", "PCSC5"NDE, SC, LE, RMRU, LEB, NDEB, SCB, MTB, CTE
Keypad facility codekpFclCodeUnsigned Int/30-255NDE, NDEB, SC, SCB, LE, LEB, RMRU, MTB
Number of keys to buffer/cachekpBuffCacheUnsigned Int/20-15NDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
Keystroke TimeoutkeystrokeTOUnsigned Int/20-15, 0 = disabledNDE, SC, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB
Custom Key Installation StatuscustomKeyPrsntdString/1“T”,“F”RMRU, SC, CTE
Clock and Data FormatrdrOutFmtString/8“dsbld”, "format1", "format2", "format3", "format4", "format5", "format6", "format7", "format8", "format9", "format10", "format11", "format12"NDE, NDEB, SC, SCB, LE, LEB, RMRU, MTB, MTKB, CTE
Reader Output FormatrdrOutputString/8“wiegand”, "clkndata"NDE, NDEB, SC, SCB, LE, LEB, RMRU
Device ParametersrsiPrmtrsString/8N/A 
Deny AccessdnyAccsString/1“T”,“F”RMRU, CTE, MTB, MTKB
Relock MethodrelockMethodString/9“tmr”, “drOpn”, “drCls”SC, RMRU, CTE, MTB, MTKB
Heartbeat TimersiHrtbtTmUnsigned Int/50 – 65535CTE, MTB, MTKB
Retry timesrsiRtryTmUnsigned Int/21-15CTE, MTB, MTKB
Subsequent DelayrsiSubqtDlyUnsigned Int/21-15CTE, MTB, MTKB
First DelayrsiFrstDlyUnsigned Int/21-15CTE, MTB, MTKB
Cache memory bits per cardcacheMemBtsUnsigned Int/30-255RMRU, CTE, MTB, MTKB
Clear cache entriesclrCacheString/1“T”,“F”RMRU, CTE, MTB, MTKB
Auto purgeautoPrgString/1“T”,“F”RMRU, CTE, MTB, MTKB
Communication Failsafe modersiCommFailSfMdString/6“disbld”,“sec”,”safe”CTE, MTB, MTKB
Cache memory modecacheMemMdString/7“full”,“fcltyCd”RMRU, CTE, MTB, MTKB
Maximum number of cache entriesmaxCacheEntriesUnsigned Int/30-255RMRU, CTE, MTB, MTKB
PIN-Required ModepinReqModeString/12“disbld”, “GrnRedNoBeep”, “GrnRedBeep2”RMRU, CTE, MTB, MTKB
Request to Enter Inquiry EnablerenInquiryString/1“T”,“F”RMRU, CTE, MTB, MTKB
IPB LED Blink EnableipbLedBlinkString/1“T”,“F”NDE, SC, CTE, MTB, MTKB
IPB Online Configuration Enable Lock/UnlockipbOnlineCfgString/8“disbld”,“lckUnlk”NDE, SC, RMRU, CTE, MTB, MTKB
IPB Offline ConfigurationipbOfflineCfgString/8“disbld”,“lckUnlk”,“dsbRdr”NDE, SC, RMRU, CTE, MTB, MTKB
IPB Long PressipbLongPressUnsigned Int/20-15NDE, SC, RMRU, CTE, MTB, MTKB
RSI APM TypersiApmTypeUnsigned Int/200 to 13 reserved (see RSI doc); 14 = NDE; 15 = ADE; 16 = BE467/FE410/BE467B; 17 = LE/LEB; 18 = RMRU; 19 = NDEBCTE, MTB, MTKB
RSI Reader TypersiRdrTypeUnsigned Int/300 to 66 reserved (see RSI doc); 67 = NDE_MT2_NO_KPD; 68 = CONTROL_SM2_NO_KPD; 69 = LE_MT2_NO_KPD; 255 = No Model InformationRMRU, CTE, MTB, MTKB

NOTE: For ENGAGE 6.1 and later devices, devices configured for IP or stand-alone communication may not transmit their RSI parameters (rsiPrmtrs) or any children tags under the RSI parameters as they are not relevant to IP or stand-alone operation. The device accepts any changes to the RSI parameters if they are provided to the device, however the device does not provide the updated information back to the host.

Audit Trail Reporting

To minimize the amount of data transfer time, the device only sends audits that have never been successfully transferred to the host. Appended to the end of an audit trail transmission is the device’s current value for the “nxtDbVerTS”. Appending this time stamp to the end of the audit trail block also ensures that the device and host are synchronized. If the JSON configuration tag “lockId” is changed, this tag will also be appended to the end of the audit trail transmission.

Table 11 describes an audit trail record JSON data structure.

Table 11: Audit Trail Record

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
AuditsauditsString/6N/A 
Audit Trail EventeventString/8See separate document for Audit & Alert Definitions.MTB, MTKB
Time StamptimeString /14“YYYYMMDDHHMMSS” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) HH = Hour ( 00 – 23 ) MM = Minutes ( 00 – 59 ) SS = Seconds ( 00 – 59 ) Example: “20140809134522” means August 9, 2014, 1:45:22 pmMTB, MTKB
Audit IDauditIdString/30 – 255 (If “auditIDEn” tag = “T”)MTB, MTKB
Next Database Version Time StampnxtDbVerTSString/18Hexadecimal value, which starts with 0x, followed by 16 hex digits. (i.e. “0x08d16357eef73a69” )MTB, MTKB
Lock IDlockIdUnsigned Int/5Door ID (0-65534) 65535 disables no tour on LE locksRMRU ,MTB, MTKB

Asynchronous Events/Alerts Reporting

Asynchronous Events/Alerts are actions that occur at the device and must be reported back to the host device. These events are the same event codes that are used for audit trail entries. For networked devices, asynchronous events are sent individually at the time the actual event occurs. See Table 12.

Table 12: Asynchronous Event Record

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
Asynchronous EventasyncEventString/10N/A 
Asynchronous EventeventString/8See separate document for Audit & Alert Definitions.MTB, MTKB
Time StamptimeString /14“YYYYMMDDHHMMSS” YYYY = Year MM = Month (01 – 12) DD = Day (01 – 31) HH = Hour (00 – 23) MM = Minutes (00 – 59) SS = Seconds (00 – 59) Example: “20140809134522” means August 9, 2014, 1:45:22 pmMTB, MTKB

The asynchronous events that are reported in real time are listed below.

NOTE: Real time reporting of these alerts can be suppressed using the wifiAlertEn config tag. This tag must proceed the wifiAlertSel tag populated with an empty array. Additionally, the dpsEn config tag can be used to stop the reporting of the Forced Door and Magnetic Tamper alerts and audits, as well stopping the Propped Door audit from reporting.

210 or 410

  • Forced Door Alert - unexpected door position movement detected

  • Tamper Alert - lock tampering detected

  • Low Battery - battery voltage <= 4.5V (N, LE) ; 4.6V (SC); 5.0V (RMRU)

  • Critical Battery - battery voltage <= 4V (N, LE) ; 4.3V (SC); 4.8V (RMRU)

  • Magnetic Tamper Alert - door position sensor tampering detected

  • Corrupt database - user access database corruption detected

  • Reader Tamper Alert - reader tampering detected (CTE)

WiFi Device Commissioning

If the device is to be configured with WiFi communication directly to the host, the device requires several different parameters that are associated with the ability to login to a host system. See Table 13.

This data is sent from the mobile application during the commissioning process.

Table 13: WiFi Commissioning Record

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
WiFiCommisionwifiCmshString/8N/ASC
Save ConfigurationssaveCnfgsString/1“T” = enables Wifi operation “F” = disables Wifi operationSC
Access Point ConfigapCnfgString/6N/ASC
SSIDssidString/32Max 32 charactersSC
AP PasswordpsswdString/64Max 63 charactersSC
User NameusrNmString/16Max 16 charactersSC
WiFi SecuritywifiSecString/7“prsnl”, “entrprs”, “open”,”wep”SC
Key IndexkyIndxUnsigned Int/11,2,3,4SC*
Host ConfighstCnfgString/7N/ASC
Discovery TypedscvryTypString/6“ipAddr”, “dmnNm”, “srvcNm”SC
Secure ConnectionscrCnnString/5“http”, “https”SC
IPipString/15“xxx.xxx.xxx.xxx”SC
IP DNS ServiceipDNSString/64Max 64 charactersSC
Alternate IP DNS ServicealtDNSString/64Max 64 charactersSC, NDE, LE, RMRU, CTE, NDEB, LEB, MTB, MTKB

*Only NDE supports “kyIndx” = 1 till 4 (if configured through host). Usage of a Key Index other than 1 is NOT recommended. For LE, RMRU, MT20W, CTE and ENGAGE Mobile Application “kyIndx” = 1.

Keyed-Hashing for Message Authentication (HMAC)

Keyed-Hashing for Message Authentication (HMAC) Authentication, by an IP Host, BLE enabled mobile application, or ENGAGE™ device, requires JSON structures that allows the use of a securing method for JSON General Parameter communications and methods to allow reception device targeting and contextual time relevance.

General Parameters JSON Object

To isolate the general parameters of a device, the general parameters JSON object is required and this object and all of its content are required when JSON Message Authentication is enabled for the site. See Table 14.

Table 14: General Parameters JSON Object

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
HMAC Message Serial NumbermainSNString/16The lower 8 bytes, in hexadecimal format, of the device serial number which the message is intended forSC
HMAC Message Time StampmsgTSString/17The first two byte must be 0x, followed by 15 Hexi-decimal digitsSC
HMAC EnablehmacEnableString/6“T” = HMAC validation is required on the received message “F” = HMAC validation is not required on the received messageSC

Hash Message Authentication Code (HMAC) Data JSON Object

To isolate the HMAC data parameters of a device the HMAC data JSON object was created. Each tag within the HMAC Data JSON Object is required in messages that have the HMAC-based JSON Message Authentication enabled for a site. See Table 15.

Table 15: Hash Message Authentication Code (HMAC) Data JSON Object

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
HMAC TypehmacTypeString/16Instruct the device which type of HMAC hashing algorithm to useSC
   0= not valid 
   1= SHA1-type hashing 
   2-7= reserved 
HMAC DigesthmacString/6440 hexadecimal digit result of the HMAC hashing algorithm. The input to the HMAC hashing algorithm is the entire message excluding the HMAC value itself.SC

Examples of User Records (JSON)

deleteAll Tag Set

The following JSON data structure excerpt represents how the user record data structure might look if a user list was being sent for the very first time or when the current user list needs to be erased and populated with a new user list. Note the value of “deleteAll” is set to 1, which signifies that the database should replace the existing database.

{
 "db": {
    "usrRcrd": {
    "deleteAll": 1,
    "delete": [],
    "update": [],
    "add": [
     {
      "usrID": "64",
      "adaEn": 0,
      "actDtTm": "20140101000000",
      "expDtTm": "20200101000000",
      "fnctn": "norm",
      "crSch": [1, 3],
      "primeCr": "01020304050607080910111213141516",
      "prCrTyp": "card"
     },
     {
      "usrID": "146",
      "adaEn": 1,
      "actDtTm": "20100101000000",
      "expDtTm": "20200101000000",
      "fnctn": "norm",
      "crSch": [1, 3],
      "primeCr": "16151413121110090807060504030201",
      "prCrTyp": "card"
    }]
}

deleteAll Tag Cleared

The following JSON data structure excerpt represents how the user record data structure might look if an updated user list was being sent to the device. This list might contain a set of users to delete, update and add.

NOTE: The value of “deleteAll” is set to 0, which signifies that the existing database in the device should be updated.

{
 "db": {
   "usrRcrd": {
   "deleteAll": 0,
   "delete": [
    {
     "primeCr": "02030405060708091011121314151617",
     "prCrTyp": "card"
    },
    {
     "primeCr": "17161514131211100908070605040302",
     "prCrTyp": "card"
    },
    {
     "primeCr": "03040506070809101112131415161718",
     "prCrTyp": "card"
    }
  ],
  "update": [
    {
     "usrID": "149",
     "adaEn": 1,
     "actDtTm": "20100101000000",
     "expDtTm": "20200101000000",
     "fnctn": "toggle",
     "crSch": [1],
     "primeCr": "16151413121110090807060504030201",
     "prCrTyp": "card"
    }
  ],
   "add": [
    {
     "usrID": "148",
     "adaEn": 0,
     "actDtTm": "20100101000000",
     "expDtTm": "20200101000000",
     "fnctn": "norm",
     "crSch": [1],
     "primeCr": "01020304050607080910111213141516",
     "prCrTyp": "card"
    }
   ]
  },

deleteAll Tag Cleared, No User Records to Update

The following JSON data structure excerpt represents how the user record data structure might look if an updated database is sent that contains no updates to the user records. Note the delete, update and add records are empty ( [] ), which signifies that there are no records to delete, add, or update.

{
 "db": {
  "usrRcrd": {
   "deleteAll": 0,
   "delete": [],
   "update": [],
   "add": []
 },

Example of Holiday Records (JSON)

The following JSON data structure represents how the data structure might look if the holiday records were being sent to the device.

{
  “db”:{
    "holidays": [
    {
     "strtDtTm": "20141223000000",
     "endDtTm": "20141227000000",
     "action": "pass"
    },
    {
     "strtDtTm": "20140703000000",
     "endDtTm": "20140705000000",
     "action": "rstrctSec"
    }
  ],
 }
}

Example of Credential Schedule Records (JSON)

The following JSON data structure represents how the data structure might look if the credential schedule records were being sent to the device.

{
  “db”: {
   "schedules": [
   {
    "days": ["Su","Mo","Tu","We","Th",”Fr","Sa"],
    "strtHr": 0,
    "strtMn": 0,
    "lngth": 1439
   },
   {
    "days": ["Mo","Tu","We","Th","Fr"],
    "strtHr": 8,
    "strtMn": 0,
    "lngth": 540
   },
   {
    "days": ["Mo","We","Fr"],
    "strtHr": 8,
    "strtMn": 0,
    "lngth": 240
   }
  ],
 }
}

Example of Auto Unlock Records (JSON)

The following JSON data structure represents how the data structure might look if the auto event records were being sent to the device.

{
  “db”: {
   "autoUnlock": [
    {
     "action": "pass",
     "strtHr": 8,
     "strtMn": 0,
     "days": ["Mo","Tu","We", "Th","Fr" ]
    },
    {
     "action": "sec",
     "strtHr": 17,
     "strtMn": 0,
     "days": ["Mo","Tu","We","Th","Fr" ]
    }
   ]
 }
}

Example of Configuration Records (JSON)

The following JSON data structure represents how the data structure might look if the configuration records were being sent to the device.

 {
 "config":{
   "battFail":"sec",
   "proxConfGE4001":"T",
   "rtcTime":"20140424152753",
   "iClsUID40b":"T",
   "bprEn":"T",
   "proxConfHID":"T",
   "uid15693":"T",
   "name":"sw555",
   "mi14443":"T",
   "uid14443":"F",
   "proxConfGECASI":"T",
   "dstStart":"12b0",
   "ada":"30",
   "proxConfAWID":"T",
   "proxConfGE4002":"F",
   "doorProp":"20",
   "relock":"3",
   "noc14443":"T",
   "dstEnd":"2230",
   "firstManIn":"false",
   "dstEnable":"false",
   "fwUrl":""
   },
"apCfgNew":
   {
    "apCfgNewEn":"T",
    "ssidNew":"02.04.12",
    "psswdNew":" G10N\@113",
    "usrNmNew":"Cr649",
    "wifiSecNew":"entrprs",
    "apCfgNewStrtTm":"20140527141029"
   },
   "rsiConfigs":{
   "rsiHrtbtTm":1234,
   "rsiRtryTm":4,"rsiSubqtDly":13,
   "rsiFrstDly":14,"autoPrg":"T",
   "rsiCommFailSfMd":"disbld",
   "relockMethod":"tmr"
   }
  }

Partial User Database Update

Putting all the records together, the following might represent the JSON data structure for a sample database that could be sent to update an existing device database.

{
 "db": {
  "usrRcrd": {
   "deleteAll": 0,
   "delete": [],
   "update": [],
   "add": [
   {
    "usrID": "64",
    "adaEn": 0,
    "actDtTm": "20140101000000",
    "expDtTm": "20200101000000",
    "fnctn": "norm",
    "crSch": [1,3],
    "primeCr": "01020304050607080910111213141516",
    "prCrTyp": "card"
   },
   {
    "usrID": "146",
    "adaEn": 1,
    "actDtTm": "20100101000000",
    "expDtTm": "20200101000000",
    "fnctn": "norm",
    "crSch": [1,3],
    "primeCr": "16151413121110090807060504030201",
    "prCrTyp": "card"
   },
   {
    "usrID": "149",
    "adaEn": 1,
    "actDtTm": "20100101000000",
    "expDtTm": "20200101000000",
    "fnctn": "toggle",
    "crSch": [1],
    "primeCr": "02030405060708091011121314151617",
    "prCrTyp": "card"
   },
   {
    "usrID": "148",
    "adaEn": 0,
    "actDtTm": "20100101000000",
    "expDtTm": "20200101000000",
    "fnctn": "norm",
    "crSch": [1],
    "primeCr": "14161514131211100908070605040302",
    "prCrTyp": "card"
   }
  ]
 },
  "schedules": [
   {
    "days": [ "Su", "Mo","Tu","We","Th","Fr","Sa"],
    "strtHr": 0,
    "strtMn": 0,
    "lngth": 1439
   },
   {
    "days": [
    "Mo",
    "Tu",
    "We",
    "Th",
    "Fr"
   ],
    "strtHr": 8,
    "strtMn": 0,
    "lngth": 540
   },
   {
    "days": [
    "Mo",
    "We",
    "Fr"
   ],
    "strtHr": 8,
    "strtMn": 0,
    "lngth": 240
   }
  ],
  "holidays": [
   {
    "strtDtTm": "20141223000000",
    "endDtTm": "20141227000000",
    "action": "pass"
   },
   {
    "strtDtTm": "20140703000000",
    "endDtTm": "20140705000000",
    "action": "rstrctSec"
   }
  ],
  "autoUnlock": [
   {
    "action": "pass",
    "strtHr": 8,
    "strtMn": 0,
    "days": ["Mo","Tu","We","Th","Fr"]
   },
   {
    "action": "sec",
    "strtHr": 8,
    "strtMn": 0,
    "days": ["Mo","Tu","We","Th","Fr"]
   }
  ]
 },
 "config": {
  "relock": 3,
  "doorProp": 20,
  "ada": 30,
  "firstManIn": 0,
  "dstEnable": 0,
  "dstStart": "3022",
  "dstEnd": "B012",
  "battFail": "asIs",
  "bprEn": "T",
  "rtcTime": "20140701170122"
 },
 "dbDwnLdTm": "20140702210122",
 "nxtDbVerTS": "0x08d16386bfaec212"
}

Delete Holiday Records

There may be instances when holiday records need to be deleted from the device. The host must be able to provide a JSON data structure that permits this operation.

The following JSON structure represents how holiday records would be erased from the device during a database update.

{
 “db”:{
  "holidays": [],
 }
}

Delete Auto Unlock Event Records

There may be instances when auto unlock records need to be deleted from the device. The host must be able to provide a JSON data structure that permits this operation.

The following JSON structure represents how auto unlock records would be erased from the device during a database update.

{
 “db”:{
  "autoUnlock": []
 }
}

WiFi Commissioning

The following structure represents a JSON data structure that contains WiFi commissioning data.

{
  "wifiCmsh":
   {
     "hstCnfg":
     {
       "ipDNS":"orcaintegration.cloudapp.net",
       "altDNS":"orcabackup.cloudapp.net",
       "scrCnn":"https",
       "dscvryTyp":"ipAddr"
     },
     "apCnfg":
     {
       "ssid":"test",
       "psswd":"password123",
       "usrNm":"default",
       "wifiSec":"prsnl"
     }
   }
}

Audit Trail

The following structure represents a JSON data structure for an audit trail block that contains 3 audits. Note that this data structure does not contain a parent tag. This is because audit trails are being requested by the host, therefore the data type is not needed.

{“audits”:[
       {
         "event":"1122334455",
         "time":20131113091752
       },
       {
         "event":"008A0000",
         "time":20131113092022
       },
       {
         "event":"00860000",
         "time":20131113092513
       }
],
“nxtDbVerTS”:”0x0873828198485981”}

Asynchronous Events

The following structure represents a JSON data structure that contains an asynchronous event.

{
   “asyncEvent":
   {
       "event":"00830000",
       "time":20131113091752
   }
}

Device Settings

This section gives an example of how the data is structured by the device when a request is made for the device parameters. These parameters are broken down into 5 different components so that redundant tags can be used.

Example Data Structure

When a mobile device connects to a device, the device reports a set of parameters to the mobile device. This is an example of the data structure that would be returned by the device.

{
   "dvcProfile":
   {
           "baseType":"nde",
           "key":"NewAPCfg",
           "value":"1"
   },
   "battV":
   {
           "main":"5.87",
           "li":"2.99"
   },
   "fwVer":
   {
           "main":"01.03.11",
           "credRdr":"01.02.10",
           "ble":"01.02.10",
           "wifi":"01.05.10",
           "mainBl":"00.01.03",
           "credRdrBl":"00.01.01"
   },
   "wifiStngs":
   {
           "ssid":"01.03.11",
           "psswd":"\@113G10N",
           "usrNm":"Br549",
           "wifiSec":"entrprs",
           "encrypt":"wep",
           "kyIndx":4,
           "dscvryTyp":"ipAddr",
           "scrCnn": "http",
           "ip":"196.23.43.113",
           "dns":"firstChoice",
           "altDNS":"secondChoice"
   },
   "apCfgNew":
   {
           "apCfgNewEn":"T",
           "ssidNew":"02.04.12",
           "psswdNew":" G10N\@113",
           "usrNmNew":"Cr649",
           "wifiSecNew":"entrprs",
           "apCfgNewStrtTm":"20140527160629"
   },
   "lckPrmtrs":
   {
           "nm":"corner office",
           "mdl": "nde",
           "lckSn":"1122334455",
           "mnSn":"2233445566",
           "mfgDt":"20140607",
           "daysInUse":145,
           "hwVer":"c1",
           "type":"strm",
           "relock":1,
           "doorProp":20,
           "ada":30,
           "firstManIn":0,
           "dstEnable":0,
           "dstStart": "3022",
           "dstEnd": "B012",
           "battFail": "sec",
           "rtcTime": "20140527140629",
           "dbDwnldTm":"20140528020000"
   },
   "rdrPrmtrs":
   {
           "bprEn": "T",
           "sn":"4455667788",
           "mfgDt":"20140607",
           "daysInUse":145,
           "hwVer":"c1"
   }
}

Gateway JSON Data Structures and IP API

The following section defines JSON structures that are used in communication with the ENGAGE Gateway.

None of the following JSON structures should be used to directly communicate with an ENGAGE device.

Edge Device JSON Data Structures

Gateway Edge Device Link List

The Gateway link list is an array object which contains an array entry for each of the Gateway linked devices.

Table 17: Gateway Edge Device Link List

TagShort TagType/Length (ASCII bytes)ValueDevice Exclusions
Access Point Link ListlinkListArray (parent)Each entry contains child JSON structures 
Unique Identifier that a host/mapp uses to reference a lock (or other device linked to Gateway)linkIdString/32Host system device identifier value – alpha-numeric 32 characters 
   NOTE: For RSI mode linkId is numeric ONLY and limited to 0 to 254, excluding 170 
Status of communication between gateway and devicelinkCommStatusString/16“disconnected”, “connected”, “advertising” (reservedfor future use) 
Device NamedeviceNameString/32Max 32 characters 
Model Type of Linked Device (self-reported by the linked device)modelTypeString/32“nde”, “control”, "enrollment reader", "ade", "gateway", "3rd party", "le", "rmru", "cte", "ndeb", "controlb", "leb"MTB, MTKB
Device IddeviceIdString/32Lower 8 bytes of edge device serial number: "A0B1000000000005" 
Edge Device BLE MAC addressmacAddrString/32MAC address of edge device: "00:07:80:78:5B:EF" 
MAC TypemacTypeString/16“public”, “random” 
Battery VoltagebattVStringJSON object “battV” defined in Retrievable Lock parametersCTE
Line VoltagelineVStringJSON object “lineV” defined in Retrievable Lock parametersR,N,L,SC
Signal QualitysignalQualityString/8“Low”, “Med”, “High”, ”Unknown” 

Example: Linked Device Data

{
 "linkList": [
   {
     "linkId": "dev00000",
     "linkCommStatus": "connected",
     "deviceName": "Front Door",
     "modelType": "nde",
     "deviceId": "a000000000000123",
     "macAddr": "00:07:80:78:2F:88",
     "macType": "public",
     "battV": {
      "main": " 5.52",
      "li": "0"
     }
    }
  ]
}

Linking Edge Devices

When linking an Edge Device to a specific Gateway, the Gateway responds with the parent tag linkInfo as defined in Table 18.

Table 18: Linking Edge Devices

TagShort TagType/Length (ASCII bytes)Value
Access Point Linked Device InfolinkInfoObject 
Unique Identifier that a host/mapp uses to reference a lock (or other device linked to Gateway)linkIdString/32Host system device identifier value – alpha-numeric 32 characters
   NOTE: For RSI mode linkId is numeric ONLY and limited to 0 to 254, excluding 170
Device IddeviceIdString/32Lower 8 bytes of edge device serial number: "A0B1000000000005"
Device NamedeviceNameString/32Max 32 characters
Status of communication between gateway and devicelinkCommStatusString/16“disconnected”, “connected”, “advertising” (reservedfor future use)
Model TypemodelTypeString/16“nde”, “control”, "enrollment reader", "ade", "gateway", "3rd party", "le", "rmru", "cte", "ndeb", "controlb", "leb"

Example: JSON body response from POST /edgeDevices

{
 "linkInfo": {
   "linkId": "dev00000",
   "deviceId": "a000000000000123",
   "deviceName": "Front Door",
   "linkCommStatus": "connected",
   "modelType": "nde"
  }
}

Linked Edge Device Data

To configure and control an online edge device that is linked to an ENGAGE Gateway, the host may need to know the current device parameters. This data structure builds on device parameters that are provided in the Device JSON Messages Section, and the real-time access control structures that follow in the Gateway JSON Data Structures Section. To configure and control an online edge device that is linked to an ENGAGE Gateway, the Gateway provides the following edge device information:

Table 19: Linked Edge Device Data

TagShort TagType/Length (ASCII bytes)Value
Access Control Device DataedgeDeviceArray (parent) of device data objects with linkId 
Unique Identifier that a host/mapp uses to reference a lock (or other device linked to a Gateway)linkIdString/32Host system device identifier value – alpha-numeric 32 characters
   NOTE: For RSI mode linkId is numeric ONLY and limited to 0 to 254, excluding 170
JSON data structures, (Insert device JSON blocks such as database, configs, settings, audits, or state change“db”, ”config”, “battV”, “fwVer,” “lockPrmtrs”, “rdrPrmtrs”, “rsiPrmtrs” “audits”, “asyncEvent”, “lockControl”, “lockStatus”Parent object corresponding to device JSON structure.See the Device JSON Messages Section for definitions of JSON tags. NOTE: lockControl and lockStatus are defined in the next section.

NOTE: For ENGAGE 6.1 and later devices, devices configured for IP or stand-alone communication may not transmit their RSI parameters (rsiPrmtrs) or any children tags under the RSI parameters as they are not relevant to IP or stand-alone operation. The device will accept any changes to the RSI parameters if they are provided to the device, however the device will not provide the updated information back to the host.

Device Control

These device JSON structures are only accessible via the Gateway. These data structures cannot be written directly to a device.

NOTE: lockLEDFlash and lockState are independent. The client issuing the command can send only lockState, only lockLEDFlash or both. If the lock state and lock are combined the lock will first flash default.

Table 20: Device Control

TagJSON Short TagType/Max-Length (ASCII bytes)Valid Values
Device ControllockControlObject (parent = lockData) 
Change Lock State (decision at door only)lockStateObject (parent = lockControl) 
Next Lock StatenextLockStateString/15”secure”, ”passage”, ”momentaryUnlock”, (not on RMRU) ”frozenSecure”, ”frozenPassage”, “auxSecure”, “auxPassage”, “auxMomntUnlck”, “mainAuxMomUnlck”, “mainAuxPassage”, “mainAuxSecure”
Momentary UnlockmomUnlckTmUnsigned Int/30 - 255
User InterfacelockLedFlashObject (parent = lockControl)N/A
LED Control EnableledNameString/16”reader”, ( Primary LED on RMRU) ”insidePushButton” (not on RMRU)
LED Pattern ParameterspattPrmtrsObject (parent = lockLedFlash) 
LED Blink ColorsledColorsString/12“green”, ”red”, ”greenThenRed”, ”redThenGreen”
LED On IntervalonTimeString / 6“100”, “500”, “1000”, “always”
LED Off IntervaloffTimeString / 6“100”, “500”, “1000”, “always”
LED Repeat ParametersrepeatPrmtsObject (parent = lockLedFlash) 
Pattern RepeatrepeatPattString/20“stop”, “once”, ”indefiniteIncDelay”, ”indefiniteConstDelay”
Number Times to Repeat PatternrepeatNumUnsigned Int/11,2,3, or 4
LED Interval TimerepeatIntervalUnsigned Int/20,20,40,60

Device Status

The Device Status JSON structures are used only to represent a device status from a Gateway to an IP host. This JSON cannot be queried directly from a device.

Individual device status varies based on the device model type. The JSON structures shown in Table 21 are a master list of possible status tags, but are dependent on the hardware of the device.

Table 21: Device Status JSON Tags

TagShort TagType/Length (ASCII bytes)Value
Device StatuslockStatusObject (parent = lockData) 
Device StatecurrentLockStateString/9”sec”, ”pass”, ”momUnlck”, “holRstrct”, ”frznSec”, ”frznPass”, “frznDne”, “dne”, “dvcFault””prvcySecd” NOTE: State is set for privacy secure or deadbolt secure.
Sensor StatussensorStatusObject (parent = lockStatus)N/A
Lock StatuslockedString/1“T”,”F”
Aux StatusauxPositionString/1“T”,”F”
Alarm StatusalarmPositionString/1“T”,”F”
Lock Clutch Position (AD and RMRU Only)lockClutchedString/1“T”, “F”
Battery CriticalprimaryBatteryStatusString/12“normal”,”low”, “critical”, “notInstalled”
Real Time Clock Backup BatteryrtcBatteryStatusString/12“normal”,”low”, “critical”, “notInstalled” Deprecated for ENGAGE 6.0 and later as no ENGAGE devices have an rtc battery (coin cell back up)
Door PositiondoorOpenString/1“T”, “F”
IPB ActiveipbActiveString/1“T”, “F”
Request To Exit ActiverexActiveString/1“T”, “F”
Request to Enter ActiverenActiveString/1“T”, “F”
Remote ReleaserelActiveString/1“T”, “F”
Deadbolt PositiondeadBoltExtendedString/1“T”, “F”
Key Override ActivekeyOverrideActiveString/1“T”, “F”
FDR Button ActivefdrActiveString/1“T”, “F”
Tamper Lid OpentamperOpenString/1“T”, “F”
Magnetic Tamper DetectedmagTamperDetectedString/1“T”, “F”
Reader Tamper DetectedrdrTamperDetectedString/1“T”, “F”

Gateway JSON Data Structures

Gateway Scan List

The scan list object contains a report detailing ENGAGE devices that are within BLE wireless distance of the Gateway.

Table 22: Gateway Scan List

TagShort TagType/Length (ASCII bytes)Value
Scan for uncaptured or unlinked devices (no linked devices)gatewayScanListArray of objects (parent)Each array entry is an object containing the following objects
Main Serial NumbermainSnString/16Max 16 characters
Device NamedeviceNameString/32“xxxx….….xxxx”
Signal QualitysignalQualityString/8“Low”, “Med”, “High”
Model TypemodelTypeString/16“nde”, “control”, "enrollment reader", "ade", "gateway", "3rd party", "le", "rmru", "cte", "ndeb", "controlb", "leb"

Gateway Configuration

Table 23: Gateway Configuration

TagShort TagType/Length (ASCII bytes)Value
Configuration BlockgatewayConfigObject (top level parent)N/A
Gateway ConfiggenGatewayConfigObject (parent = gatewayConfig) 
Gateway NamedeviceNameString/32Max 32 characters
Host Connection TypehostProtocolString/9“rs485Rsi”, “ipEngage” “ipClient”
Enable Shell Debug PortsshEnableString/1“true”,”false”
Clock TimertcTimeString /14“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month (01 – 12), DD = Day (01 – 31), HH = Hour (00 – 23), MM = Minutes (00 – 59), SS = Seconds (00 – 59). Example: “20140710145030” means July 10, 2014, 2:50:30 pm.
Daylight Saving TimedstEnableString/5"false"=DST not observed, "true"=DST observed
DST StartdstStartString/4Hour that clocks are moved ahead by 1 hour. 3=daylight month start, 0=daylight day of week start, 2=daylight week # start, 2=daylight hour start, US default is 3022.
DST EnddstEndString /4Hour that clocks are moved behind by 1 hour. B=standard month start (1=Jan,…). 0=standard day of week start. 0 = Sun. 1=standard week # start. (1=1st, 5=last). 2=standard hour start. US default is B012.
Firmware AddressfwurlString/64Max 64 characters
Firmware Download TimefwDwnldTmString /14YYYYMMDDHHMMSS – “20140527040000”, May 27, 2014, 4:00:00 am, Value of “0” results in immediate download.
Firmware Implement/Update TimefwImplTmString /14YYYYMMDDHHMMSS – “20140603030000”, June 3, 2014, 3:00:00 am, Value of “0” results in immediate update/implement.
IP Mode SettingsgatewayIpModeConfigObject (parent = gatewayConfig)N/A
Interface IDinterfaceIdString/4“eth0”, “wlan0”
Interface EnableinterfaceEnableString/1“T” = enables interface operation. “F” = disables interface operation.
Gateway Discovery MethoddiscoveryMethodString/6“dhcp”, “staticIP”, “zeroConf”
Fixed IP Address, (only applies if discovery method is set to staticIP)fixedIpAddrString/15“xxx.xxx.xxx.xxx”
Default Gateway IP Address (only applies if discovery method is set to staticIP)defGatewayIpAddrString/15“xxx.xxx.xxx.xxx”
Netmask (only applies if discovery method is set to staticIP)netmaskString/15“xxx.xxx.xxx.xxx”
IP DNS Service (only applies if discovery method is set to staticIP)ipDnsAddrString/15“xxx.xxx.xxx.xxx”
Alternate IP DNS Service (only applies if discovery method is set to staticIP)altDnsAddrString/15“xxx.xxx.xxx.xxx”
IP Server URL (only applies if hostProtocol is ipClient)ipServerURLString/64Max 64 characters
CA Server URL (only applies if hostProtocol is ipClient)caServerURLString/64Max 64 characters
Keep Alive Time (only applies if hostProtocol is ipClient)wsKeepAliveString/4“1” to “3600” seconds
EdgeDevice FW Update related configsedgeDeviceFwUrlsArray of Objects (parent = gatewayConfig)N/A
Firmware AddressfwurlString/64Max 64 characters
Device Model TypemdlString/15“nde”, “le”, “control”
Firmware Download TimefwDwnldTmString/14YYYYMMDDHHMMSS – “20140527040000”, May 27, 2014, 4:00:00 am, Value of “0” results in immediate download of the device’s firmware image to the Gateway.
Firmware Transfer TimefwImplTmString/14YYYYMMDDHHMMSS – “20140603030000”, June 3, 2014, 3:00:00 am, Value of “0” results in immediate start of transfer of the image to the device.
Firmware VersionfwVerString/9“xx.xx.xx” Example: “02.08.05”

Edge Device Firmware Update via Gateway

Gateway firmware version 01.49.12 and later supports updating linked edge devices’ firmware for sites which are running 410-IP mode with the edgeDeviceFwUrls JSON tag as defined above in Section 4.2.2. All linked edge devices matching the Device Model Type tag will be updated to the requested firmware. Please note that if the specified Firmware Version (fwVer) does not match the actual version downloaded from the Firmware Address (fwurl), the edge device will not be updated.

Status of the firmware update can be monitored through the resource GET /gateway/deviceInfo. The children tags, edgeDeviceFwUrls, status, and extendedStatus contain all relevant information regarding the firmware update.

Gateway firmware versions 1.52.16 and later support firmware download of a secure connection. In this case the host must provide the fwurl specified with “https://” and the required port (ex. “https://10.200.136.198:444/gw_image.bin”) If no port is specified in the request, it is assumed that the user intends to use port 443.

When completing a firmware download from the host over HTTPS the gateway will utilize the port specified (or 443) and complete the download via TLS, however the gateway will not download or validate the certificate from the host.

The example below illustrates initiating a firmware update for all linked NDE edge devices to take effect immediately.

Example: application/json

{
   "gatewayConfig": {
     "edgeDeviceFwUrls": [
     {
     "fwurl": "http://192.168.43.24/nde_02.08.13_Releasepkg.02.08.13.bin",
     "mdl": "nde",
     "fwDwnldTm": "0",
     "fwImplTm": "0",
     "fwVer": "02.08.13"
     }
     ]
   }
}

Device Information Records (Gateway)

ENGAGE devices report all retrievable parameters in one large block and includes some parameters that may not directly apply to the device or its mode of operation. For example; RSI protocol capable devices might report RSI parameters when the device is not configured for RSI protocol operation.

Table 24: Device Information Records (Gateway)

TagShort TagType/Length (ASCII bytes)Value
Gateway Device InfogatewayDeviceInfoObject (top level parent) 
Device ProfiledvcProfileObject (parent = gatewayDeviceInfo)N/A
Base TypebaseTypeString/3“gwe”
ExtensionsextArray of objects (parent = dvcProfile)N/A
Extension's nameKeyString/15“gweSiteSurvey”
Extension's custom argumentValueString/15“1”
Firmware VersionsfwVerObject (parent = gatewayDeviceInfo)N/A
MainmainString/8“xx.xx.xx”
Bluetooth Module Secondaryble2String/8“xx.xx.xx”
Main Bootloader (uboot)mainBlString/8“xx.xx.xx”
WiFi MAC AddressmacAdrString/17“xx.xx.xx.xx.xx.xx”
Ethernet MAC AddressethernetMacAdrString/17“xx.xx.xx.xx.xx.xx”
WiFi SettingswifiStngsObject (parent = gatewayDeviceInfo)N/A
WiFi enablewifiEnableString/1“T” = enables WiFi operation, “F” = disables WiFi operation
SSIDssidString/32Max 32 characters
AP Password / Security KeypsswdString/64Max 64 characters
User NameusrNmString/16Max 16 characters
WiFi SecuritywifiSecString/7“prsnl”, “entrprs”, “open”, “wep”
Key IndexkyIndxString/11,2,3,4
Gateway ParametersgatewayParametersObject (parent = gatewayDeviceInfo)N/A
Host Connection TypehostProtocolString/8“rs485Rsi”, “ipEngage”, “ipClient”
NamedeviceNameString/32“xxxx….….xxxx”
ModelmdlString/4“gwe”
Gateway Main Serial NumbermainSnString/16Max 16 characters
Hardware VersionhwVerString/6“xxxxxx”
Days In UsedaysInUseString/50-65536
Gateway Uptime (time since boot)gwUpTimeString/3xxx (days)
Clock TimertcTimeString /14“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month (01 – 12), DD = Day (01 – 31), HH = Hour (00 – 23), MM = Minutes (00 – 59), SS = Seconds (00 – 59), Example: “20140710145030” means July 10, 2014, 2:50:30 pm
Enable Shell Debug PortsshEnableString/5“true”, “false”
Daylight Saving TimedstEnableString/5"false"=DST not observed, "true"=DST observed
DST StartdstStartString/4Hour that clocks are moved ahead by 1 hour. B=standard month start (1=Jan). 0=standard day of week start. 0 = Sun. 1=standard week # start. (1=1st, 5=last). 2=standard hour start. US default is 3022.
DST EnddstEndString /4Hour that clocks are moved behind by 1 hour. 3=daylight month start. 0=daylight day of week start. 2=daylight week # start. 2=daylight hour start. US default is B012.
Firmware AddressfwUrlString/64Max 64 characters
Firmware download TimefwDwnldTmString /14YYYYMMDDHHMMSS – “20140527040000” = May 27, 2014, 4:00:00 am
Firmware Implement TimefwImplTmString /14YYYYMMDDHHMMSS – “20140603030000” = June 3, 2014, 3:00:00 am
IP Interfacesipv4InterfacesObject (parent = gatewayDeviceInfo)N/A
Ethernet InterfacesethernetPropertiesObject (parent = ipv4Interfaces)N/A
Assigned IP AddressassignedIpAddrString/15“xxx.xxx.xxx.xxx”
Default Gateway IP AddressdefGatewayIpAddrString/15“xxx.xxx.xxx.xxx”
NetmasknetmaskString/15“xxx.xxx.xxx.xxx”
WiFi Client PropertieswifiClientPropertiesObject (parent = ipv4Interfaces)N/A
Gateway IP AddressAssigned IP AddressString/15assignedIpAddr
Default Gateway IP AddressDefault Gateway IP AddressString/15defGatewayIpAddr
NetmaskNetmaskString/15netmask
RSI SettingsgatewayRsiModeConfigObject (parent = gatewayDeviceInfo)N/A
RSD AddressrsdAddressUnsigned Int/30 to 254, where 170 is not allowed
Low Door AddresslowDoorUnsigned Int/30 to 254, where 170 is not allowed, must be less than high door setting; default of 0
High Door AddresshighDoorUnsigned Int/30 to 254, where 170 is not allowed, must be greater than Low Door setting; default of 15
IP Mode SettingsgatewayIpModeConfigObject (parent = gatewayDeviceInfo)N/A
Gateway Discovery MethoddiscoveryMethodString/8“dhcp”, “staticIP”, “zeroConf”
Static IP Address, (only applies if discovery method is set to staticIP)fixedIpAddrString/15“xxx.xxx.xxx.xxx”
Default Gateway IP Address (only applies if discovery method is set to staticIP)defGatewayIpAddrString/15“xxx.xxx.xxx.xxx”
Netmask (only applies if discovery method is set to staticIP)netmaskString/15“xxx.xxx.xxx.xxx”
IP DNS Service (only applies if discovery method is set to staticIP)ipDnsAddrString/15“xxx.xxx.xxx.xxx”
Alternate IP DNS Service (only applies if discovery method is set to staticIP)altDnsAddrString/15“xxx.xxx.xxx.xxx”
IP Server URL (only applies if hostProtocol is ipClient)ipServerURLString/64Max 64 characters
CA Server URL (only applies if hostProtocol is ipClient)caServerURLString/64Max 64 characters
Keep Alive Time (only applies if hostProtocol is ipClient)wsKeepAliveString/4“1” to “3600” seconds
Gateway Feature ListgatewayFeatureListArray of strings (parent = gatewayDeviceInfo)[“rsiMode”, “ipServerMode”, “ipClientMode”, “lockFwUpgrade”]
EdgeDevice Firmware Update StatusedgeDeviceFwUrlsArray of Objects (parent = gatewayDeviceInfo)N/A
Firmware AddressfwurlString/64Max 64 characters
Model TypemdlString/15“nde”, “le”, “control”
Firmware Download TimefwDwnldTmString/14“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month (01 – 12), DD = Day (01 – 31), HH = Hour (00 – 23), MM = Minutes (00 – 59), SS = Seconds (00 – 59), Example: “20140710145030” means July 10, 2014, 2:50:30 pm
Firmware Transfer TimefwImplTmString/14“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month (01 – 12), DD = Day (01 – 31), HH = Hour (00 – 23), MM = Minutes (00 – 59), SS = Seconds (00 – 59), Example: “20140710145030” means July 10, 2014, 2:50:30 pm
Firmware VersionfwVerString/9“xx.xx.xx” Example: “02.08.05”
Firmware Update Status (for the devices of model type indicated in mdl above)statusObjects (parent = edgeDeviceFwUrls)N/A
Firmware Download Status (Firmware image download to the Gateway)fwDwnldString/24“pendingDwnld” = Device firmware image download to the Gateway from the server is pending. “inProgress” = Device firmware image download to the Gateway from the server is in progress. “completed” = Device firmware is downloaded to the Gateway. “failed” = Device firmware image download to the Gateway from the server is failed. “canceled” = Device firmware image download to the Gateway from the server is canceled. “” = no status available.
Firmware Update Status (for the model type indicated in the mdl above)fwUpdateString/24“pendingUpdate” = Firmware update to the devices (of the model type indicated in the mdl above) is pending. “inProgress” = Firmware update to the devices (of the model type indicated in the mdl above) is in progress. “suspended” = Firmware update to the devices (of the model type indicated in the mdl above) is suspended, will be resumed later. “completed” = Firmware update to the devices (of the model type indicated in the mdl above) is completed successfully. “pendingVerification” = Firmware is transferred to all the devices (of the model type indicated in the mdl above) successfully, one or more devices are installing the firmware and Gateway is waiting for verification of the firmware update. “pendingReschedule” = Gateway has received a new firmware update request while still in the process of completing a firmware update to the edge device. “pendingReschedule” will be set momentarily while the current update is canceled and the new update is started. “pendingCancel” = Gateway has received a request to cancel the current firmware update. “pendingCancel” will be set momentarily while the current update is canceled. “failed” = Firmware update to one or more devices (of the model type indicated in the mdl) is failed. “canceled” = Firmware update to the devices (of the model type indicated in the mdl) is canceled. “” = no status available.
Extended Firmware Update Status for each Device (for the model type indicated in mdl above)extendedStatusArray of objects (parent = edgeDeviceFwUrls)N/A
Unique Identifier that a host/mapp uses to reference a lock (or other device linked to the Gateway)linkIdString/32Device identifier value – alpha-numeric 32 characters
Device IddeviceIdString/16Lower 8 bytes of edge device serial number: "A0B1000000000005"
Device namedeviceNameString/32 
Device model typemdlString/5“nde”, “le” ,“control”, “cte”
Device firmware versionfwVerString/9“xx.xx.xx” Example: “02.08.05”
Device firmware update statusfwUpdateStatusString/24“pendingUpdate” = Firmware image transfer to the device is pending. “inProgress” = Firmware image transfer to the device is in progress. “suspended” = Firmware transfer is suspended, will be resumed later. “suspended-lowbatt” = Firmware transfer is suspended due to device being in low battery condition, will be resumed later once battery is replaced. “suspended-busy” = Firmware transfer is suspended due to other JSON data (such as configs, database) being transferred to the device, will be resumed later. “completed” = Firmware update to the device is completed successfully. “pendingVerification” = Firmware is transferred to the device successfully, device is installing the firmware and Gateway is waiting for verification of the firmware update. “pendingVerification-lowbatt” = Firmware is transferred to the device successfully, device has not installed the firmware due to low battery. Replace the battery to continue installing the firmware. “failed” = Firmware update to the device is failed. “canceled” = Firmware update to the device is canceled. “” = no status available.
Firmware transfer start time for the device (Gateway Time)fwUpdateStartTmString/14“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month (01 – 12), DD = Day (01 – 31), HH = Hour (00 – 23), MM = Minutes (00 – 59), SS = Seconds (00 – 59), Example: “20140710145030” means July 10, 2014, 2:50:30 pm
Firmware transfer complete percentage.fwTransferCmpltPercentageUnsigned Int/30 to 100
Firmware update complete time (Gateway Time), (last successful update via Gateway)fwUpdateCmpltTmString/14“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month (01 – 12), DD = Day (01 – 31), HH = Hour (00 – 23), MM = Minutes (00 – 59), SS = Seconds (00 – 59), Example: “20140710145030” means device was last upgraded successfully via Gateway on July 10, 2014, 2:50:30 pm
Firmware update cancel time (Gateway Time)fwUpdateCancelTmString/14“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month (01 – 12), DD = Day (01 – 31), HH = Hour (00 – 23), MM = Minutes (00 – 59), SS = Seconds (00 – 59), Example: “20140710145030” means July 10, 2014, 2:50:30 pm
No. of firmware update retries made by the Gateway (in case of update failure)retriesUnsigned Int/30 to 2

Gateway IP Host Authentication Setup

Used between a Gateway and IP host during initialization of the Gateway using default logins. This object is returned to the IP Host during a GET from /gateway/newCredentials.

Table 25: Gateway IP Host Authentication

TagShort TagType/Length (ASCII bytes)Value
New Login CredentialscredentialsObject (top level parent) 
Unique host login to gatewayusrString / 32gateway_<serial number>
Randomly generated password for host login to gatewaypwdString / 32randomly generated password

Site Survey Results

Gateway reports the results of a site survey once the site survey is completed.

Table 26: Site Survey Results

TagShort TagType/Length (ASCII bytes)Value
TimeTimeString/21“[2018/03/05 12:19:11]”
VersionVersionString/8“1.0”
Site surveysite_surveyArray of objectsN/A
Link IDlinkIdString / 15 (parent = site_survey)“dev00000”
Device namedeviceNameString / 32 (parent = site_survey)“xxx…xxx”
ModelmodelString/15 (parent = site_survey)“nde”, “le”, “control”
Signal QualitysignalQualityUnsigned int/3 (parent = site_survey)75
Stop light mappingstoplightMappingObjectN/A
RedredString / 3 (parent = stoplightMapping)“red”
lowlowUnsigned int/3 (parent = red)0 - 100
highhighUnsigned int/3 (parent = red)0 - 100
YellowyellowString / 8 (parent = stoplightMapping)“yellow”
lowlowUnsigned int/3 (parent = yellow)0 -100
highhighUnsigned int/3 (parent = yellow)0 -100
GreengreenString / 8 parent = stoplightMapping)“green”
lowlowUnsigned int/3 (parent = green)0 - 100
highhighUnsigned int/3 (parent = green)0 - 100

Appendix A: Credential Tag Name Definitions

“norm” (Normal)

A normal credential opens a door for a specified time. The time span is defined by the relock delay. The normal function works on all devices.

“freeze” (Freeze)

A freeze credential disables the credential reader. After a freeze credential has been used on a lock, only a pass through credential will operate the lock. Present a freeze credential to return the lock to an operational state.

“toggle” (Toggle)

A toggle credential opens a door and leaves it open until it is closed again by a toggle credential. It toggles a door between locked and unlocked.

“passThru” (Pass Through)

A pass through credential will always unlock a lock that is in secured lockout mode, regardless of how the lock was put in secured lockout mode.

“lockDown” (Lock Down)

A lockdown credential will always put the lock into the secured mode plus freeze credential functionality.

oneTm” (One Time Use)

A onetime use credential opens a door only once with the normal function. Once a onetime use credential has been used on a door, it will no longer work on that door. It can still work on other doors, to which is has been assigned.

“dogd” (Dogged)

Toggle credential functionality for a crash bar exit device.

“suprv” (Supervised)

Supervised credentials allow access only when a second supervised credential is presented.

“delAlrm” (Delete with Alarm)

A delete with audit/alarm credential will log an audit entry that the credential was used. However, the credential will NOT unlock the door. If an alarm is available on the lock, then the alarm will sound. This functionality is the same as the “blocked” credential type.

“ctAux” (Ct Auxiliary)

A CT Aux credential operates the auxiliary relay of a CT Controller, but not the main relay. The time span the relay is activated is specified by the relock delay.

“ctMnAux” (Ct Main and Aux)

A CT Main and Aux credential operates both the auxiliary relay and main relay of a CT controller. The time span the relays are activated as specified by the relock delay.

“ctAuxToggle” (Ct Auxiliary Toggle)

A CT Auxiliary Toggle credential changes the state of the auxiliary relay from locked to unlocked, or vice versa, unless in a Freeze state.

“ctMnAuxToggle” (Ct Main + Aux Toggle)

A CT Main + Aux Toggle credential changes the state of both the main and auxiliary relays from locked to unlocked, or vice versa, unless in a Freeze state.

“ctMnAuxPassThru” (Ct Main + Aux Pass Through)

A CT Main + Aux pass through credential unlocks both the main and auxiliary relays regardless of state, for the time of the relock delay.

“updtFrmSvr”(Update from server)

Update from server credential will trigger the update from server in SF210 mode irrespective of lock state. In Sf200 mode this credential will be treated as invalid credential.

updtFrmSvrNrm” (Update from server+Normal)

Update from server+Normal credential will behave as normal credential and then trigger the update from server in SF210 mode irrespective of lock state.

In SF200 mode this credential will be treated as normal credential only.

runDiag” (run internal diagnostics and report audits)

The run diagnostics credential will trigger the built-in self-test routines of the device and initiate an update from server in order to report the results in SF210 mode irrespective of lock state.

In 410IP mode, resultant audits will be sent immediately to the Gateway.

In SF200 and 410RSI mode this credential will be treated as invalid.

calDPS” (calibrate door position sensor)

The calibrate DPS credential will establish a new closed “home” position for the device. This calibration performs the same functionality as executed during commissioning for home position.

blocked” (Blocked)

The functionality of the blocked credential type is identical to the “delAlrm” credential type as defined above.

Credential Tags Supported by Device

Table 28: Credential Tags Supported by Device

DeviceTags supported
NDE“norm”, “freeze”, “toggle”, “passThru”, “lockDown”, “oneTm”, “delAlrm”, “updtFrmSvr”, “updtFrmSvrNrm”, “blocked”
Schlage Control“norm”, “freeze”, “toggle” (functions as “norm”), “delAlrm”, “passThru”, “blocked”
LE“norm”, “freeze”, “toggle”, “passThru”, “lockDown”, “oneTm”, “delAlrm”, “updtFrmSvr”, “updtFrmSvrNrm”, “blocked”
CTE“norm”, “freeze”, “toggle”, “passThru”, “lockDown”, “oneTm”, “delAlrm”, “updtFrmSvr”, “updtFrmSvrNrm”, “blocked”, “ctAux”, “ctAuxToggle”, “ctMnAux”, “ctMnAuxToggle”, “ctMnAuxPassThru”

Appendix B: Device Specific Characteristics

Table 29: Device Specific Characteristics

FeatureHolidaysAuto EventCredential Schedule
NDE321616
SCN/AN/A16
LE321616
RMRU3216N/A
CTE321616

 

 

 

 

 

ENGAGE - JSON Data Structures

 

<!DOCTYPE html>
<html>
<head>
<title>ENGAGE - JSON Data Structures</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */
/* Author: Nicolas Hery - http://nicolashery.com */
/* Version: b13fe65ca28d2e568c6ed5d7f06581183df8f2ff */
/* Source: https://github.com/nicolahery/markdownpad-github */
 
/* RESET
=============================================================================*/
 
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
}
 
/* BODY
=============================================================================*/
 
body {
  font-family: Helvetica, arial, freesans, clean, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  color: #333;
  background-color: #fff;
  padding: 20px;
  max-width: 960px;
  margin: 0 auto;
}
 
body>*:first-child {
  margin-top: 0 !important;
}
 
body>*:last-child {
  margin-bottom: 0 !important;
}
 
/* BLOCKS
=============================================================================*/
 
p, blockquote, ul, ol, dl, table, pre {
  margin: 15px 0;
}
 
/* HEADERS
=============================================================================*/
 
h1, h2, h3, h4, h5, h6 {
  margin: 20px 0 10px;
  padding: 0;
  font-weight: bold;
  -webkit-font-smoothing: antialiased;
}
 
h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
  font-size: inherit;
}
 
h1 {
  font-size: 28px;
  color: #000;
}
 
h2 {
  font-size: 24px;
  border-bottom: 1px solid #ccc;
  color: #000;
}
 
h3 {
  font-size: 18px;
}
 
h4 {
  font-size: 16px;
}
 
h5 {
  font-size: 14px;
}
 
h6 {
  color: #777;
  font-size: 14px;
}
 
body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
  margin-top: 0;
  padding-top: 0;
}
 
a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
  margin-top: 0;
  padding-top: 0;
}
 
h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
  margin-top: 10px;
}
 
/* LINKS
=============================================================================*/
 
a {
  color: #4183C4;
  text-decoration: none;
}
 
a:hover {
  text-decoration: underline;
}
 
/* LISTS
=============================================================================*/
 
ul, ol {
  padding-left: 30px;
}
 
ul li > :first-child, 
ol li > :first-child, 
ul li ul:first-of-type, 
ol li ol:first-of-type, 
ul li ol:first-of-type, 
ol li ul:first-of-type {
  margin-top: 0px;
}
 
ul ul, ul ol, ol ol, ol ul {
  margin-bottom: 0;
}
 
dl {
  padding: 0;
}
 
dl dt {
  font-size: 14px;
  font-weight: bold;
  font-style: italic;
  padding: 0;
  margin: 15px 0 5px;
}
 
dl dt:first-child {
  padding: 0;
}
 
dl dt>:first-child {
  margin-top: 0px;
}
 
dl dt>:last-child {
  margin-bottom: 0px;
}
 
dl dd {
  margin: 0 0 15px;
  padding: 0 15px;
}
 
dl dd>:first-child {
  margin-top: 0px;
}
 
dl dd>:last-child {
  margin-bottom: 0px;
}
 
/* CODE
=============================================================================*/
 
pre, code, tt {
  font-size: 12px;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
}
 
code, tt {
  margin: 0 0px;
  padding: 0px 0px;
  white-space: nowrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px;
}
 
pre>code {
  margin: 0;
  padding: 0;
  white-space: pre;
  border: none;
  background: transparent;
}
 
pre {
  background-color: #f8f8f8;
  border: 1px solid #ccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px;
}
 
pre code, pre tt {
  background-color: transparent;
  border: none;
}
 
kbd {
    -moz-border-bottom-colors: none;
    -moz-border-left-colors: none;
    -moz-border-right-colors: none;
    -moz-border-top-colors: none;
    background-color: #DDDDDD;
    background-image: linear-gradient(#F1F1F1, #DDDDDD);
    background-repeat: repeat-x;
    border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD;
    border-image: none;
    border-radius: 2px 2px 2px 2px;
    border-style: solid;
    border-width: 1px;
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
    line-height: 10px;
    padding: 1px 4px;
}
 
/* QUOTES
=============================================================================*/
 
blockquote {
  border-left: 4px solid #DDD;
  padding: 0 15px;
  color: #777;
}
 
blockquote>:first-child {
  margin-top: 0px;
}
 
blockquote>:last-child {
  margin-bottom: 0px;
}
 
/* HORIZONTAL RULES
=============================================================================*/
 
hr {
  clear: both;
  margin: 15px 0;
  height: 0px;
  overflow: hidden;
  border: none;
  background: transparent;
  border-bottom: 4px solid #ddd;
  padding: 0;
}
 
/* TABLES
=============================================================================*/
 
table th {
  font-weight: bold;
}
 
table th, table td {
  border: 1px solid #ccc;
  padding: 6px 13px;
}
 
table tr {
  border-top: 1px solid #ccc;
  background-color: #fff;
}
 
table tr:nth-child(2n) {
  background-color: #f8f8f8;
}
 
/* IMAGES
=============================================================================*/
 
img {
  max-width: 100%
}
</style>
</head>
<body>
<p><strong>ENGAGE - JSON DATA STRUCTURES</strong></p>
<p><strong>REVISION CONTROL RECORD</strong></p>
<table>
<tbody>
<tr>
<td><strong>VER</strong></td>
<td><strong>Date</strong></td>
<td><strong>DESCRIPTION OF CHANGE</strong></td>
<td><strong>AUTHOR</strong></td>
</tr>
<tr>
<td>1.0</td>
<td>8/15/2015</td>
<td>Re-baselined after internal review &amp; removed old change list. Please see previous versions for more detailed change list.</td>
<td>Z. GrandPre</td>
</tr>
<tr>
<td>1.01</td>
<td>10/08/2015</td>
<td>Updated Appendix A to state which credential types are supports by different products</td>
<td>J. Everson / Z. GrandPre</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added Notes column to note which messages do not pertain to a devices (NDE, chlage Control, LE)</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added configurations for Schlage Control</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added configurations for LE</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added additional credential tag “blocked”</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added additional lock type “prvcy” (privacy)</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added real-time subscription for Deadbolt, IPB, LBM</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.02</td>
<td>11/30/2015</td>
<td>Removed HHMMSS from mfgDt tag; changed linkID to linkId</td>
<td>K Broerman / Z. GrandPre</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added “0” as acceptable values for “fwDwnldTm” and “fwImplTm”</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added “wifiAlertEn” as a new tag for NDE &amp; LE devices to add the function to enable/disable Wi-Fi alerts.</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.03</td>
<td>12/1/2015</td>
<td>Added the last valid date for user expiration</td>
<td>J. Baumgarte</td>
</tr>
<tr>
<td>1.04</td>
<td>12/04/2015</td>
<td>Added 2 new gateway URIs to Table 24</td>
<td>S. Walsmith</td>
</tr>
<tr>
<td>1.05</td>
<td>12/10/2015</td>
<td>Added missing tags to section 4.1.5</td>
<td>Z. GrandPre</td>
</tr>
<tr>
<td>1.06</td>
<td>1/7/2016</td>
<td>Added a few missing tags to Table 7</td>
<td>J. Baumgarte</td>
</tr>
<tr>
<td>1.07</td>
<td>1/13/2016</td>
<td>Changed Gateway SSH config tag from enableSSHport to sshEnable</td>
<td>K. Broerman</td>
</tr>
<tr>
<td>1.08</td>
<td>1/26/2016</td>
<td>Corrected credential schedule block length from 1-1440 to 1-1439 adding note that 1439 represents 23:59:59</td>
<td>J. Everson</td>
</tr>
<tr>
<td>1.09</td>
<td>2/4/2016</td>
<td>Corrected Activation/Expiration comment.</td>
<td>J. Baumgarte</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added comment around rtcTime</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Corrected comment around holiday</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Corrected capitalization of fwurl, added comment for fwUrl</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.10</td>
<td>2/24/2016</td>
<td>Added wifiAlertSel</td>
<td>T. Anfield</td>
</tr>
<tr>
<td></td>
<td></td>
<td>- Clarified crSch and days tag is an array of Strings for holidays, schedules</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.11</td>
<td>3/8/2016</td>
<td>Changed deadbolt Hardware Configuration (hwCfg) from db to dbolt to avoid confusion with db which is used for databases</td>
<td>J. Everson</td>
</tr>
<tr>
<td>1.12</td>
<td>3/22/2016</td>
<td>Fixed camelCasing on the blinkIntLed, rapidBlink, and ipbAudit LE tags</td>
<td>T. Anfield</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Clarified Alerts and removed Propped Door which is only an audit</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.13</td>
<td>3/30/2016</td>
<td>Changed ipbAudit to ipbAuditEnable for naming clarity in Modifiable Parameters</td>
<td>R. Rayburn</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Corrected blinkIntLed, rapidBlink, and ipbAuditEnable LE tags in Retrievable Parameters section</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.14</td>
<td>04/08/2016</td>
<td>Added signalQuality to Table 15</td>
<td>S. Walsmith</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Changed “Connected” to “connected” in the example following Table 15</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added description to Section 4.1.3</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.15</td>
<td>05/09/2016</td>
<td>Added MiFare Plus (mip14443) Cred Type to 2.7.1 and 2.7.2</td>
<td>T. Anfield</td>
</tr>
<tr>
<td>1.16</td>
<td>05/25/2016</td>
<td>Updated Model to add LE hardware versions lems, lemb, lemd</td>
<td>J. Everson</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Removed HwCfg (moving to Model for hardware config)</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.17</td>
<td>06/10/2016</td>
<td>corrected string length of nxtDbVerTS</td>
<td>S. Walsmith</td>
</tr>
<tr>
<td>1.18</td>
<td>06/10/2016</td>
<td>Added prvcySecd to lock state under Lock Status</td>
<td>J. Everson, T. Anfield</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Updated IPB Audit Enable / Disable to show that LE doesn’t support</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.19</td>
<td>06/17/2016</td>
<td>Corrected copy/paste error on blinkIntLed, rapidBlink and ipbAuditEnable under retrievable parameters</td>
<td>J. Everson</td>
</tr>
<tr>
<td>1.20</td>
<td>07/18/2016</td>
<td>Add runDiag and calDPS credential type definition</td>
<td>T. Anfield</td>
</tr>
<tr>
<td>1.21</td>
<td>08/04/2016</td>
<td>Change lock to device in most places</td>
<td>J. Evenson</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Add Argos specifics to document</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.22</td>
<td>08/11/2016</td>
<td>Add lockID to retrieveable parameter list</td>
<td>J. Everson</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Updated lockID JSON DOOR ID from 0 – 65535 to 0 – 65534 for valid range</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added to lockID tag that a value of 65535 disables no tour on LE locks</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.23</td>
<td>08/17/2016</td>
<td>Updated AR Content to reference VDE for Von Duprin Exit Device.</td>
<td>D. Pfunder</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Added VDE controls and status for clutch sensing (same as AD content), next-man-in settings (same as other ENGAGE products), and LED controls (as NDE reader LED)</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.24</td>
<td>09/06/2016</td>
<td>Add dpsEn for DPS audit suppression</td>
<td>T. Anfield</td>
</tr>
<tr>
<td></td>
<td></td>
<td>-   Correct delay ranges (relock, ADA, door prop)</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>1.25</td>
<td>09/21/2016</td>
<td>Remove Section 4.2.6, Gateway URI table</td>
<td>S. Walsmith</td>
</tr>
<tr>
<td>1.26</td>
<td>10/06/2016</td>
<td>- Clarified iCls15693 and pivConfig not supported by NDE or SC - Added rtcTime not changed if within 5 minutes of current time note - Added note regarding older NDE firmware versions only supporting /api/firmware/latest as fwurl endpoint; also note on mobile app behavior for Update Firmware. - Added note to fwDwnldTm and fwImplTm regarding only immediate implementation is supported at this time</td>
<td>T. Anfield</td>
</tr>
<tr>
<td>1.27</td>
<td>10/27/2016</td>
<td>- Removed Latch bolt for LE locks</td>
<td>J. Everson</td>
</tr>
<tr>
<td>1.28</td>
<td>10/28/2016</td>
<td>- iCls15693 not supported by LE, mip14443 supported by NDE, SC</td>
<td>T. Anfield</td>
</tr>
<tr>
<td>1.29</td>
<td>11/02/2016</td>
<td>- Added ipClient for Gateway commissioning in ip Client mode - Added Gateway Directed Firmware Upgrade related tags.</td>
<td>A. Patel</td>
</tr>
<tr>
<td>1.30</td>
<td>12/08/2016</td>
<td>- Added L to device excludions for magTamperDetected RTAC messages</td>
<td>J. Everson</td>
</tr>
<tr>
<td>1.31</td>
<td>1/10/2017</td>
<td>- Fixed “Config”, “Type”, and “Relock in Modifiable Parameters to reflect the correct camelCase - Added Section “Linking Edge Devices” to reflect the JSON tag linkInfo - Added Section “Edge Device Firmware Update via Gateway” to reflect the updated capability if ENGAGE 5.0</td>
<td>F. Holt</td>
</tr>
<tr>
<td>1.32</td>
<td>1/16/2017</td>
<td>- Added “customKeyPrsntd” to report Custom Key Installation Status. - Added Device Profiles and dneEn tag for Argos.</td>
<td>A. Kamath T. Anfield</td>
</tr>
<tr>
<td>1.33</td>
<td>1/25/2017</td>
<td>- Update retrievable parameters “dbUpdateStatus” for database resume feature - Update retrievable parameters section to include “dpsEn” and “wifiAlertSel”</td>
<td>S. Thaker</td>
</tr>
<tr>
<td>1.34</td>
<td>02/17/2017</td>
<td>- Added rdrSense function</td>
<td>T. Anfield</td>
</tr>
<tr>
<td>1.35</td>
<td>03/20/2017</td>
<td>- Added CTE ENGAGE controller. Added new credential types ctAuxToggle, ctMnAuxPassThru, ctMnAuxToggle. - Added new lckMode 310 and fwVer for Ethernet - Added new mdl type “cte” - Added new configs for doorPropEn, pinLength, pinEn, immRelockEn - Added new DAD</td>
<td>J. Everson, D. Pfunder</td>
</tr>
<tr>
<td>1.36</td>
<td>04/18/2017</td>
<td>- Added line power retrieveable parameters for CTE</td>
<td>J. Everson</td>
</tr>
<tr>
<td>1.37</td>
<td>4/26/2017</td>
<td>- Made corrections to reader parameters to accurately represent Schlage Control Exceptions</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.38</td>
<td>04/28/2017</td>
<td>-Added gatweayCommFail setting for RMRU and clarified rsiCommFailSFMd support for RMRU</td>
<td>D. Pfunder T. Holt</td>
</tr>
<tr>
<td>1.39</td>
<td>5/12/2017</td>
<td>- Removed the duplicate table which was in section 2.7 (duplicate of 2.7.1). Error correction only.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.40</td>
<td>5/22/2017</td>
<td>- Removing NDE as exception from No-Tour JSON tags</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.41</td>
<td>6/05/2017</td>
<td>- Correcting Exceptions to JSON tags “cntrlDecTimeout” and “credSectNum” - Added JSON tag “invCrdAudEn” to the Modifiable Parameters section for future development.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.42</td>
<td>6/13/2017</td>
<td>- Fixed “interfaceId” value “eth0”. Was erroneously “eth” before this correction.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.43</td>
<td>6/16/2017</td>
<td>- Fixed “interfaceId” value “wlan0”. Was erroneously “wlan” before this correction. - Fixed inconsistent Abbreviations for the Device Exceptions Column - Included all RMRU and CTE tags into this document for the ENGAGE 5.2 release.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.44</td>
<td>6/26/2017</td>
<td>- Added the JSON tag “lockId” to the end of the audit trail and added comments about this being sent if the lockId configuration is changed</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.45</td>
<td>7/10/2017</td>
<td>- Added Reader Tamper to the Asynchronous Events section</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.46</td>
<td>7/18/2017</td>
<td>- Added lineV to edge device link list array for CTE only</td>
<td>J. Everson</td>
</tr>
<tr>
<td>1.47</td>
<td>08/22/2017</td>
<td>-Added tamperFail for RM/RU. Clarified firstManIn is not supported for RMRU. Clarified bprEn is supported for RMRU. Clarified battFail for RMRU</td>
<td>D. Pfunder</td>
</tr>
<tr>
<td>1.48</td>
<td>08/23/2017</td>
<td>- Added mt20w WiFiTest extension to dvcprofile</td>
<td>T. Anfield</td>
</tr>
<tr>
<td>1.49</td>
<td>09/18/2017</td>
<td>-ipbLedBlink marked as supported for RM/RU -wtyAct and rdrPrmtrs marked as not supported for CTE</td>
<td>D. Pfunder</td>
</tr>
<tr>
<td>1.50</td>
<td>9/19/2017</td>
<td>-“crSn” changed to “sn” as part of the “rdrPrmtrs” parent tag. This was a mistake in the documention. -added “blocked” as a supported credential type for NDE and a definition of “blocked” to the credential type definitions. -added definition that “toggle” credential type functions as “norm” credential type for SC.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.51</td>
<td>10/6/2017</td>
<td>-“Mdl” changed to “mdl” in section 2.7.2.2 (Retrievable Parameters). This was an auto-correct error.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.52</td>
<td>10/25/2017</td>
<td>- Made comments around “li” tag for lithium batteries always reporting 0 for NDE, LE, CTE, RMRU, and SC when connected to a GWE</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.53</td>
<td>10/25/2017</td>
<td>- credRdrBl, alarmPosition, auxPosition, rdrTamperDetected updated to show actual usage (CTE Only)</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.54</td>
<td>10/26/2017</td>
<td>- Added JSON tag “invCrdAudEn” to the Retrievable Parameters section</td>
<td>T. Holt</td>
</tr>
<tr>
<td></td>
<td></td>
<td>- Removed Exceptions from invCrdAudEn for ENGAGE 6.0 release</td>
<td></td>
</tr>
<tr>
<td>1.55</td>
<td>11/6/2017</td>
<td>- Removed Table 12 duplicate table - Added NDE, LE, RMRU, CTE as excluded from altDns - Added note regarding 1 min rtc delta for ENGAGE 6.0 - Added note regarding fwImplTm now being support as expected for all products.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.56</td>
<td>11/8/2017</td>
<td>- Added notes around support for GWE firmware download over HTTPS - Added note regarding the deprication of rtcBatteryStatus and utilization of rtccStatus instead for ENGAGE 6.0 Gateway - Added note around how to turn off WiFi Alerts with the enable and empty array selection tags.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.57</td>
<td>1/3/2018</td>
<td>- fixed “lock”, “main”, “ble”, “wifi” tags camelCase in section 2.7.2 Retrievable Paramters</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.58</td>
<td>1/29/2018</td>
<td>- Added “pendingReschedule” and “pendingCancel” to “fwUpdate” tag for Firmware Update Status from the Gateway. - Added “jsonHMAC” and “dupAuditDet” extensions to the device profile for devices which support JSON HMAC and additional audit tags to detect duplicate audits respectively. - Added “fwUrlMethod extension to the device profile to report when MT20W FW accepts a full FW url instead of the path only.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.59</td>
<td>2/1/2018</td>
<td>- Added “getAuditNoErase” extension to the device profile for devices which support the functionality to provide audits to the BLE Host without deleting the audits from the edge device’s internal memory</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.60</td>
<td>2/5/2018</td>
<td>- Added wording around deleteAll, delete, update, add, all being required tags inside of the db tag.</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.61</td>
<td>2/9/2018</td>
<td>- Added tag “invCrdAudEn” to the modifiable parameters section for the new Audit ID feature</td>
<td>T. Holt</td>
</tr>
<tr>
<td>1.62</td>
<td>3/2/2018</td>
<td>- fixed value “Undog” to reflect real capitalization “undog”</td>
<td>T. Anfield</td>
</tr>
<tr>
<td>1.63</td>
<td>3/27/2018</td>
<td>Added HMAC related object “genPrmtrs ´and “hmacData”</td>
<td>M. Nichols</td>
</tr>
<tr>
<td>1.64</td>
<td>3/28/2018</td>
<td>Added New Access Point Config JSON for SSID change feature</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.65</td>
<td>4/2/2018</td>
<td>Modified section 4.2.3 and added section 4.2.5 for site survey feature</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.66</td>
<td>4/5/2018</td>
<td>Updated retrieveable parameters (2.7.2.2) for Wi-Fi Call In Re-Try Mechanism tags and minor note on kyIndx tag (2.10)</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.67</td>
<td>4/20/2018</td>
<td>Updated Section 2.7.2.1 Device Profile values for tag “baseType”</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.68</td>
<td>4/23/2018</td>
<td>Updated review comments for “dvcProfile”, “kyIndex”</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.69</td>
<td>4/24/2018</td>
<td>Changed “wiFiTest” back to “WiFiTest” as per review comments</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.70</td>
<td>4/26/2018</td>
<td>Added JSON tag to modifiable and retrievable parameters for the Audit ID Enable Feature “audIDEn”</td>
<td>Tripp Holt</td>
</tr>
<tr>
<td>1.71</td>
<td>4/30/2018</td>
<td>Updated definition of tag &quot;invCrdAudEn&quot; in section 2.7.1 to match section 2.7.2.2</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.72</td>
<td>4/30/2018</td>
<td>Updated &quot;auditId&quot; tag for duplicate audits feature in Audit Trail Reporting</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.73</td>
<td>5/7/2018</td>
<td>Updated for JSON tag standard in section 2.7.1 and 2.7.2.1</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.74</td>
<td>6/15/2018</td>
<td>Updated ASCII characters limit &lt; 0x7F (section 2.0), actDtTm &amp; expDtTm (section 2.3) and Wi-Fi max pwd length value &lt;= 63 (sections 2.7.1, 2.7.2.2, 2.10)</td>
<td>Anirban Paul</td>
</tr>
<tr>
<td>1.75</td>
<td>6/25/2018</td>
<td>Formatting update for ENGAGE 6.1 Release Section 2.7.2.2 updated to remove rsiPrmtrs for stand-alone and IP configured devices running ENGAGE 6.1 and later firmware. Updates to example JSON to remove model “mdl” from configurable items. Misc updates to example JSON for clarity Clarification for nxtDbVerTS and dbDwnLdTm as they are not children of the “db” tag when being set from the host</td>
<td>Tripp Holt</td>
</tr>
<tr>
<td>1.76</td>
<td>7/24/2018</td>
<td>Moved “wifiDwnldRtyTmIntv” and “wifiDwnldRtyCnt” from the parent tag “wifiStngs” to the parent tag “lockPrmtrs” in the retrievable parameters section (2.7.2)</td>
<td>Tripp Holt</td>
</tr>
<tr>
<td>1.77</td>
<td>8/16/2018</td>
<td>Updated device profile basetype value for Control from “sc” to “be467” and device profile for mt20w full url</td>
<td>Anirban Paul</td>
</tr>
</tbody>
</table>
<p><strong>Table of Contents</strong></p>
<ol>
<li>
<p>Introduction 9</p>
</li>
<li>
<p>Device JSON Messages 10</p>
</li>
</ol>
<p>2.1 Database Overview 10</p>
<p>2.2 Database Download Maintenance Records 10</p>
<p>2.3 User Records 11</p>
<p>2.4 Credential Schedule Record 14</p>
<p>2.5 Holiday Record 14</p>
<p>2.6 Auto Unlock 15</p>
<p>2.7 Device Parameters 16</p>
<p>2.7.1 Modifiable Parameters 16</p>
<p>2.7.2 Retrievable Parameters 25</p>
<p>2.7.3 Retrievable Parameters for Real-Time Service / Decision at Door 37</p>
<p>2.7.4 Subscription for Real-Time Service / Decision at Door 39</p>
<p>2.8 Audit Trail Reporting 41</p>
<p>2.9 Asynchronous Events/Alerts Reporting 41</p>
<p>2.10 WiFi Device Commissioning 42</p>
<p>2.11 Keyed-Hashing for Message Authentication (HMAC) 43</p>
<p>2.11.1 General Parameters JSON Object 43</p>
<p>2.11.2 Hash Message Authentication Code (HMAC) Data JSON Object 44</p>
<ol>
<li>Examples of Device JSON Databases 45</li>
</ol>
<p>3.1 User Records, deleteAll tag set 45</p>
<p>3.2 User Records, deleteAll tag cleared 45</p>
<p>3.3 User Records, deleteAll tag cleared, no user records to 46</p>
<p>3.4 Holiday Record 47</p>
<p>3.5 Credential Schedule Record 47</p>
<p>3.6 Auto Unlock Record 48</p>
<p>3.7 Configuration Record 48</p>
<p>3.8 Partial User Database Update 49</p>
<p>3.9 Delete Holiday and Auto Event Records 52</p>
<p>3.10 Wifi Commissioning 53</p>
<p>3.11 Audit Trail 53</p>
<p>3.12 Asynchronous Events 54</p>
<p>3.13 Device Settings 54</p>
<p>3.13.1 Device parameters 54</p>
<p>3.13.2 Real-Time Service Parameters 56</p>
<p>3.14 Server Command 58</p>
<ol>
<li>Gateway JSON Data Structures &amp; IP API 59</li>
</ol>
<p>4.1 Edge Device JSON Data Structures 59</p>
<p>4.1.1 Linked Device Management 59</p>
<p>4.1.2 Gateway Edge Device Link List 59</p>
<p>4.1.3 Linking Edge Devices 62</p>
<p>4.1.4 Linked Edge Device Data 63</p>
<p>4.1.5 Device Control 63</p>
<p>4.1.6 Device Status 65</p>
<p>4.2 Gateway JSON Data Structures 66</p>
<p>4.2.1 Gateway Scan List 66</p>
<p>4.2.2 Gateway Configuration 67</p>
<p>4.2.3 Device Information Records (Gateway) 71</p>
<p>4.2.4 Gateway IP Host Authentication Setup 82</p>
<p>4.2.5 Site Survey results 82</p>
<p>4.2.6 Gateway Status 83</p>
<ol>
<li>Appendix A: Credential tag name definitions 84</li>
</ol>
<p>5.1 Credential Tags supported by device 86</p>
<ol>
<li>Appendix B: Device Specific Characteristics 88</li>
</ol>
<h1>Introduction</h1>
<table>
<thead>
<tr>
<th><strong>Abbreviations Used In This Document</strong></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>410-IP</td>
<td>Device, Linked with a Gateway equipped with an Ethernet connection</td>
</tr>
<tr>
<td>BLE</td>
<td>Bluetooth Low Energy</td>
</tr>
<tr>
<td>db</td>
<td>Database</td>
</tr>
<tr>
<td>Dbm</td>
<td>Database Manager</td>
</tr>
<tr>
<td>ENGAGE™</td>
<td>Connectivity Platform Technology</td>
</tr>
<tr>
<td>JSON</td>
<td>Java Script Object Notation</td>
</tr>
<tr>
<td>NDE, N</td>
<td>Schlage ENGAGE™ Wireless Cylindrical Lock</td>
</tr>
<tr>
<td>LE, L</td>
<td>Schlage ENGAGE™ Wireless Mortise Lock</td>
</tr>
<tr>
<td>SC</td>
<td>Schlage Control, Schlage Deadbolt / Interconnected Lock (with ENGAGE™)</td>
</tr>
<tr>
<td>RMRU, R</td>
<td>Von Duprin E-Dog Exit Device(with ENGAGE™) Base Device Type</td>
</tr>
<tr>
<td>RM</td>
<td>Remote Monitoring – RMRU Variant Supporting Sensors Only</td>
</tr>
<tr>
<td>RU</td>
<td>Remote Undogging – RMRU Variant Supporting Sensors and Undogging</td>
</tr>
<tr>
<td>CTE, C</td>
<td>Schlage ENGAGE™ Controller</td>
</tr>
<tr>
<td>RTAC</td>
<td>Real-Time Access Control Service</td>
</tr>
<tr>
<td>URI</td>
<td>Uniform Resource Identifier</td>
</tr>
<tr>
<td>URL</td>
<td>Uniform Resource Locator</td>
</tr>
<tr>
<td>TBD</td>
<td>To Be Determined</td>
</tr>
</tbody>
</table>
<p>The communication protocol that will be used to transfer data directly between
the ENGAGE family of devices and the database host device will be based upon the
JSON file format. For the purposes of this document, the database host can be
any device that connects to an ENGAGE device through a WiFi or Bluetooth Low
Energy (BLE) connection.</p>
<p>This document is meant to define all possible JSON tags that are used to
configure an ENGAGE device, however tags are not applicable to all system
configurations or devices. Tags which are utilized only in either the ENGAGE
Gateway or ENGAGE API may be defined only in the Schlage ENGAGE – SAM API
Integration documents.</p>
<p>Within the data structure tables, there are parent tags which do not include any
data elements. Parent tags are implemented because they allow for the re-use of
common tag names within a different parent tag context. An example of a common
tag name is the tag “days”. This tag is common to the credential schedule and
auto unlock parent tags. Another example is within the user records data
structure. The “add”, “update” and “delete” parent tags share parameters that
are specific elements with an individual user record. Parent tags within the
tables are shown in <strong>Bold Text</strong> to differentiate from Child records.</p>
<p>For information regarding the JSON standard, the web site <a href="http://www.json.org">www.json.org</a> 
contains many helpful links. The JSON specification can also be found [at this link]
(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).</p>
<h1>Device JSON Messages</h1>
<p>There are 4 main categories for JSON data structures that will be sent to and
from a host system (access control panel or SW system) and the security device
located at the entryway (lock or other device). These categories are Database,
Configuration, Audit Trail, and Asynchronous Events / Alerts.</p>
<p>Data transfers between a host and device will occur within a “session”. The
session will contain data that is formatted to the JSON specification. The JSON
“files” are being sent over BLE or WiFi to an embedded device that has very
limited RAM.  As a result, the JSON data files will be written to the lock’s
flash memory and parsed after the data transfer has completed.</p>
<p><strong>NOTE:</strong> ENGAGE Edge devices support only standard English language ASCII
characters less than 0x7F.</p>
<h2>Database Overview</h2>
<p>During a connected event when a device is either requesting a database update
from the host directly over WiFi or if the database is being updated via BLE,
the device will receive an updated database. The database received by the device
can contain user records, credential schedules, holidays, and auto unlock data
sent by the host.</p>
<p>The database will consist of several different sub components. The sub
components are user records, holidays, user schedules and auto unlock events. The
parent tag of the database will be expressed with the JSON “db” tag.</p>
<p>From these sub components, only individual user records will be capable of being
modified during a database update. This will be accomplished through the
“deleteAll, “delete”, “update” and “add” tags.</p>
<p>If the holidays, user schedules or auto unlock records need to be added or
updated, then the records will be sent as a whole. For these records, no
individual records will be capable of being deleted or updated. In the case of
when the holidays or auto unlock records need to be completely erased from the
lock, the tag will be sent with an empty “[ ]” collection. (i.e. “holidays”: [ ]
or “autoUnlock”: [ ])</p>
<p>When a database update occurs for devices with user credential capabilities, at
least one credential schedule must always be sent with the default schedule of
access 24 hrs x 7 days / week. An empty collection for credential schedules
cannot be possible. If the host fails to send the default 24x7 credential
schedule, then valid credentials will not gain access.</p>
<p>Configurations can also be included with the database, but they are a separate 
JSON parent tag structure.</p>
<h2>Database Download Maintenance Records</h2>
<p>The “nxtDbVerTS” tag will be used to keep the host synchronized with the ENGAGE
device. This timestamp will be inserted into the URL by the ENGAGE device on
each database request. When the ENGAGE device requests a database for the very
first time, it will do so with respect to a value of “0” for the “nxtDbVerTS”
tag. The host will respond by sending an initial database, and it will include
an updated value for the “nxtDbVerTS” tag. When the lock makes the next database
request, it will include the updated nxtDbVerTS in the URL. This process will
continue until a device reset occurs.</p>
<p>If the ENGAGE device is a networked offline device, the host must include in the
database records the specific time that the device will request the next
database. This will be accomplished through the “dbDwnLdTm” database download
time.</p>
<p><strong>Table 1: Database Download Records</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Database Download Time</td>
<td>dbDwnLdTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140704030000” July 4, 2014, 3:00:00 am</td>
<td>SC</td>
</tr>
<tr>
<td>Next Database Version Time Stamp</td>
<td>nxtDbVerTS</td>
<td>String/18</td>
<td>Hexadecimal value, that starts with 0x, followed by 16 hex digits. (i.e. “0x08d16357eef73a69” )</td>
<td></td>
</tr>
</tbody>
</table>
<h2>User Records</h2>
<p>User records will come into the device through a “new” or an “updated” database.
This ability will be controlled through the “deleteAll” tag. When the
“deleteAll” tag value is set to “1”, the device will get a new user database.
When this value is set to “0”, the device will get an update to the existing 
user database.</p>
<p>There will be instances when a completely new database will be sent to the
device. This will happen when the:</p>
<ul>
<li>
<p>ENGAGE device is programmed for the very first time.</p>
</li>
<li>
<p>Host device determines that the differences between the device’s existing 
database and the new database are too numerous.</p>
</li>
</ul>
<p>When the host sends user records to the device, the records will be grouped in
terms of user records that will be deleted, updated, and added to the device.
The order in which these records are sent from the host must be in that same
order: delete, update and add. All four of the tags (deleteAll, delete, update,
add) must be included inside the db tag, even if there is no applicable user
record changes to the respective tag. When user records need to be updated
within the ENGAGE device, it is logical that the device have knowledge of which
records need to be deleted before updating and adding new user records.</p>
<p>For the purposes of updating a user record, the entire user record will be sent
from the host. The record will include data that needs to be updated along with
the data that does not need to be updated.</p>
<p>When an individual user record needs to be deleted only the primary credential
ID and primary credential type will be sent as the identifier for that record.</p>
<p>A user record will describe the parameters associated with each user of the
access control device. A complete user record will be delimited with several
different JSON tags. The individual tags within a User Record are described in
Table 2.</p>
<p>The order defined in the usrRcrd tag defines the searching order for the lock.
As user records are modified, these are appended to the devices database.</p>
<p>The credential records must be encrypted as specified in the <strong>Schlage ENGAGE Sort
&amp; Encryption</strong> document.</p>
<p><strong>Table 2: User Record</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>JSON Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Database Block</strong></td>
<td><strong>db</strong></td>
<td><strong>String/2</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>User Record Block</strong></td>
<td><strong>usrRcrd</strong></td>
<td><strong>String/7</strong></td>
<td><strong>N/A</strong></td>
<td><strong>RMRU</strong></td>
</tr>
<tr>
<td>Delete All</td>
<td>deleteAll</td>
<td>Int/1</td>
<td>1 = Delete entire existing database 0 = Do not delete entire existing database</td>
<td>RMRU</td>
</tr>
<tr>
<td><strong>Delete User Record</strong></td>
<td><strong>delete</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>RMRU</strong></td>
</tr>
<tr>
<td><strong>Update User Record</strong></td>
<td><strong>update</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>RMRU</strong></td>
</tr>
<tr>
<td><strong>Add User Record</strong></td>
<td><strong>add</strong></td>
<td><strong>String/3</strong></td>
<td><strong>N/A</strong></td>
<td><strong>RMRU</strong></td>
</tr>
<tr>
<td>UserID</td>
<td>usrID</td>
<td>Unsigned Int /7</td>
<td>1-1,048,575 record number identifier</td>
<td>RMRU</td>
</tr>
<tr>
<td>ADA enable</td>
<td>adaEn</td>
<td>Int/1</td>
<td>0 = ADA Disabled 1 = ADA Enabled</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>Credential Function</td>
<td>fnctn</td>
<td>String/8</td>
<td>“norm”, “freeze”, “toggle”, “passThru”, “lockDown” “oneTm” “dogd” “suprv” “delAlrm” “ctAux” “ctMnAux” “ctMnAuxToggle” “ctMnAuxPassThru” “ctAuxToggle” “updtFrmSvr” “updtFrmSvrNrm” “blocked”</td>
<td>RMRU, See Appendix A, Section 5.1 for per device compatibility</td>
</tr>
<tr>
<td>Credential Schedule</td>
<td>crSch</td>
<td>Array of Unsigned Int/2s</td>
<td>1 through N, where N is the maximum number of credential schedules the device allows. At a minimum, a user record will have a credential schedule of “[1]”, which means the credential will have 24-7 access.</td>
<td>RMRU</td>
</tr>
<tr>
<td>Activation Date, Time</td>
<td>actDtTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140706130530” July 6, 2014, 1:05:30 pm. Minimum date/time is 20100101000000 Note: All devices have resolution to hours.</td>
<td>RMRU</td>
</tr>
<tr>
<td>Expiration Date, Time</td>
<td>expDtTm</td>
<td>String/14</td>
<td>YYYYMMDDHHMMSS – “20140924150000” Sept 24, 2014, 3:00:00 pm. Minimum date/time is 20100101000000 Note: All devices have resolution to hours. The recommended value for no expiration is “21351231235959”</td>
<td>RMRU</td>
</tr>
<tr>
<td>Primary Credential</td>
<td>primeCr</td>
<td>String/25</td>
<td>May need 200 bits = 25 bytes of data. Credential data in hexadecimal format The contents of this tag must be encrypted. See ENGAGE Sort &amp; Encryption document for more information.</td>
<td>RMRU</td>
</tr>
<tr>
<td>Primary Credential Type</td>
<td>prCrTyp</td>
<td>String/7</td>
<td>“card”,”pin”,”biomtrc”</td>
<td>RMRU</td>
</tr>
<tr>
<td>Secondary Credential</td>
<td>scndCr</td>
<td>String/25</td>
<td>Credential data in hexadecimal format. The contents of this tag must be encrypted. See ENGAGE Sort &amp; Encryption document for more information.</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>Secondary Credential Type</td>
<td>scndCrTyp</td>
<td>String/7</td>
<td>“card”,”pin”,”biomtrc”</td>
<td>SC, RMRU</td>
</tr>
</tbody>
</table>
<h2>Credential Schedule Record</h2>
<p>Credential Schedule Records are used to describe a set of times when an
individual credential can be granted access. These times are described by a
specific day of the week and time, not by a specific calendar date. These
records are stored in the device and are applied to individual user records
through the “Credential Schedule” tag within individual user records. Table 3
describes each of the fields associated with a credential schedule.</p>
<p><strong>Devices with credential readers:</strong></p>
<p><strong>In order for a credential to have access to a device, at least one credential
schedule must be programmed into the device.</strong> In the event that an existing
credential schedule needs to be deleted from the lock, then the host must send
at least one credential schedule that allows access 24 hrs / day, 7 days a week.</p>
<p>The credential schedules must be explicitly defined for every database structure
provided to the lock, even if previously defined.</p>
<p><strong>Table 3: Credential Schedule Record</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>JSON Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Database Block</strong></td>
<td><strong>db</strong></td>
<td><strong>String/2</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>Credential Schedule Block</strong></td>
<td><strong>schedules</strong></td>
<td><strong>String/9</strong></td>
<td><strong>N/A</strong></td>
<td><strong>RMRU</strong></td>
</tr>
<tr>
<td>Days</td>
<td>days</td>
<td>Array of String/2s</td>
<td>[ “Su”, “Mo”, “Tu”, “We”, “Th”, “Fr”,“Sa” ]</td>
<td>RMRU</td>
</tr>
<tr>
<td>Start Hour</td>
<td>strtHr</td>
<td>Unsigned Int/2</td>
<td>Hour, where a start hour (Hr) can be 0-23.</td>
<td>RMRU</td>
</tr>
<tr>
<td>Start Minute</td>
<td>strtMn</td>
<td>Unsigned Int/2</td>
<td>Minute, where Minute can be 0-59.</td>
<td>RMRU</td>
</tr>
<tr>
<td>Length</td>
<td>lngth</td>
<td>Unsigned Int/4</td>
<td>Duration of the schedule, in minutes (decimal),</td>
<td>RMRU</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td>(1 – 1439 ) value 1439 represents 23:59:59 all other values represent the minute value 1438 represents 23:58:00 value 479 represents 7:59:00</td>
<td></td>
</tr>
</tbody>
</table>
<h2>Holiday Record</h2>
<p>Holiday records are events that describe when a device should be put into a
special state based upon a certain calendar date and time, overriding an
auto-unlock schedule. A secured holiday puts the device into the normally
secured state. A passage holiday puts the device into a normal passage state.
The restricted secured holiday puts the device into a secured state, but the
device only accepts 2 card types in this state, pass-through and freeze.</p>
<p>When in a restricted secured state if a freeze is presented, the device will
transition from restricted secured to a normal secured state – allowing the
expanded credential types to be allowed at the door. To restore the device to
the restricted secured state, a freeze must be presented two more times (first
will take the device to frozen secured, second will trigger a schedule look-up
causing the device to resume restricted secured). The pass-through functions as
expected, momentarily unlocking the door.</p>
<p>In the event that the existing holiday record needs to be deleted from the
device, and not replaced with a new set of holidays, then an ID empty tag of 
“[]” will be sent from the host.</p>
<p>Holiday records must be explicitly defined for every database structure provided
to the device, even if previously defined.</p>
<p>Table 4 describes each of the fields associated with a holiday record.</p>
<p><strong>Table 4: Holiday Record</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>JSON Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Database Block</strong></td>
<td><strong>db</strong></td>
<td><strong>String/2</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td><strong>Holiday Block</strong></td>
<td><strong>holidays</strong></td>
<td><strong>String/8</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td>Start Date / Time</td>
<td>strtDtTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20131224000000”, Dec 24, 2013, 00:00:00 ( Midnight ) NOTE: NDE has resolution to the minute.</td>
<td>SC</td>
</tr>
<tr>
<td>End Date / Time</td>
<td>endDtTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20131227080000” Dec 27, 2013, 8:00:00 am NOTE: NDE has resolution to the minute.</td>
<td>SC</td>
</tr>
<tr>
<td>Action</td>
<td>action</td>
<td>String/9</td>
<td>“pass”, “sec”, “rstrctSec”*</td>
<td>SC, rstrctSec not supported on RMRU</td>
</tr>
</tbody>
</table>
<h2>Auto Unlock</h2>
<p>Auto unlock records are device specific events that describe when the device
should be put into secure or passage mode based upon a specific day of the week
and time. An auto-unlock record only describes when the device should change its
current state. In order to put the device back to its original state, an
additional auto unlock record is required. For many doors, a good “rule of
thumb” is to have an auto-lock schedule, scheduled for midnight. This way if
someone toggles a device unlocked during the day, the door will relock itself at
midnight.</p>
<p>In the event that the existing auto unlock record needs to be deleted from the
device, and not replaced with a new set of auto unlockevents, then an ID empty
tag of “[ ]” will be sent from the host.</p>
<p>Auto unlock must be explicitly defined for every database structure provided to
the device, even if previously defined.</p>
<p>Table 5 describes each of the fields associated with an auto unlock record.</p>
<p><strong>Table 5: Auto Unlock Record</strong></p>
<table>
<thead>
<tr>
<th>Tag</th>
<th>JSON Short Tag</th>
<th>Type/Length (ASCII bytes)</th>
<th>Value</th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Database Block</strong></td>
<td><strong>db</strong></td>
<td><strong>String/2</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td><strong>Auto Unlock Block</strong></td>
<td><strong>autoUnlock</strong></td>
<td><strong>String/10</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td>Action</td>
<td>action</td>
<td>String/4</td>
<td>“pass” “sec”</td>
<td>SC</td>
</tr>
<tr>
<td>Start Hour</td>
<td>strtHr</td>
<td>Unsigned Int/2</td>
<td>Hr, where HR can be 0 - 23</td>
<td>SC</td>
</tr>
<tr>
<td>Start Min</td>
<td>strtMn</td>
<td>Unsigned Int/2</td>
<td>Min, where Min can be 0 - 59</td>
<td>SC</td>
</tr>
<tr>
<td>Day</td>
<td>days</td>
<td>Array of String/2s</td>
<td>[ “Su”, “Mo”, “Tu”, “We”, “Th”, “Fr”, “Sa” ]</td>
<td>SC</td>
</tr>
</tbody>
</table>
<h2>Device Parameters</h2>
<p>This section describes the data structures for modifying and retrieving device
parameters.</p>
<h3>Modifiable Parameters</h3>
<p>Some device parameters can be changed by a host device. When modifying
parameters, a host sends a JSON data structure to the device that contains a set
of configuration parameters. Table 6 shows a complete list of all of the JSON
data tags and tag values that can be modified by a host. Some of the parameters
are device specific, and may not apply to all devices.</p>
<p>Modifiable parameters will vary by each device’s capability or the specific
configuration of the device.</p>
<p>In order to support a standard of JSON configs moving into the future the
standard has been established to use “T” / ”F” for configuration tags/items (to
enable or disable a feature). However, because some of the currently established
tags do not use this standard, the previously implemented tag types will
maintain their current implementation and the standard will be established for
new tags implemented in the future.</p>
<p>See the <strong>Configuration Record</strong> section for an example of this data structure.</p>
<p>Table 6 shows a listing of Modifiable Parameters.</p>
<p><strong>Table 6: Modifiable Parameters</strong></p>
<table>
<thead>
<tr>
<th>Tag</th>
<th>Short Tag</th>
<th>Type/Length (ASCII bytes)</th>
<th>Value</th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Configuration Block</strong></td>
<td><strong>config</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Type</td>
<td>type</td>
<td>String/6</td>
<td>“strm” “clsrm” “office” “dorm” “apt” “prvcy”</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>Relock</td>
<td>relock</td>
<td>Unsigned Int/3</td>
<td>Delay time in seconds (1-30 for NDE,LE; 1-60s for SC)</td>
<td>RMRU</td>
</tr>
<tr>
<td>Central Decision Mode Timeout</td>
<td>cntrlDecTimeout</td>
<td>Unsigned Int/4</td>
<td>Delay time in deciseconds (0-6540) Note: 0=central decision mode disabled (local decision mode enabled)</td>
<td>NDE, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Credential Sector Number</td>
<td>credSectNum</td>
<td>Unsigned Int/2</td>
<td>Credential Sector Number (1-15)</td>
<td>NDE, LE, SC, CTE, RMRU</td>
</tr>
<tr>
<td>Jaguar Sectors</td>
<td>jagSectors</td>
<td>Unsigned Int/5</td>
<td>Jaguar Sector Bitmask (0-65535)</td>
<td>RMRU</td>
</tr>
<tr>
<td>Lock ID</td>
<td>lockId</td>
<td>Unsigned Int/5</td>
<td>Door ID (0-65534) 65535 disables no tour on LE locks</td>
<td>RMRU</td>
</tr>
<tr>
<td>Group IDs</td>
<td>groupIds</td>
<td>UnsignedInt/5</td>
<td>Group ID (0-65535) array with up to 16 elements</td>
<td>RMRU</td>
</tr>
<tr>
<td>Door Prop Delay</td>
<td>doorProp</td>
<td>Unsigned Int/3</td>
<td>Delay time in seconds (1-255)</td>
<td>SC</td>
</tr>
<tr>
<td>Propped Door Delay Enable</td>
<td>doorPropEn</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU</td>
</tr>
<tr>
<td>ADA Delay</td>
<td>Ada</td>
<td>Unsigned Int/3</td>
<td>Delay time in seconds (1-255)</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>First Man In</td>
<td>firstManIn</td>
<td>Int/1</td>
<td>0=No First Man In 1= First Man In</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>Dog On Next Exit</td>
<td>dneEn</td>
<td>Int/1</td>
<td>0=Do not use Dog on Next Exit 1=Schedules Dog on Next Exit</td>
<td>NDE, SC, LE, CTE</td>
</tr>
<tr>
<td>Battery Fail State</td>
<td>battFail</td>
<td>String/4</td>
<td>“asIs”, “safe, “sec”</td>
<td>SC, RMRU can only operate as sec, CTE</td>
</tr>
<tr>
<td>Blink Interior LED when locked</td>
<td>blinkIntLed</td>
<td>String/1</td>
<td>“T” = enabled , ”F” = disabled (default)</td>
<td>NDE, SC, CTE</td>
</tr>
<tr>
<td>Privacy Rapid blink</td>
<td>rapidBlink</td>
<td>String/1</td>
<td>“T” = enabled , ”F” = disabled (default)</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>IPB Audit Enable / Disable</td>
<td>ipbAuditEnable</td>
<td>String/1</td>
<td>“T” = enabled , ”F” = disabled (default)</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Daylight Savings Time</td>
<td>dstEnable</td>
<td>Int/1</td>
<td>0=DST not observed 1=DST observed</td>
<td></td>
</tr>
<tr>
<td>DST Start</td>
<td>dstStart</td>
<td>String/4</td>
<td>Hour that clocks are moved ahead by 1 hr. 3=standard month start (1=Jan,…)            0=standard day of week start, 0 = Sun…. 2=standard week # start (1=1st,..5=last) 2=standard hour start US default is 3022</td>
<td></td>
</tr>
<tr>
<td>DST End</td>
<td>dstEnd</td>
<td>String /4</td>
<td>Hour that clocks are moved behind by 1 hour. B=daylight month start 0=daylight day of week start 1=daylight week # start 2=daylight hour start US default is B012</td>
<td></td>
</tr>
<tr>
<td>Clock Time</td>
<td>rtcTime</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) HH = Hour ( 00 – 23 ) MM = Minutes ( 00 – 59 ) SS = Seconds ( 00 – 59 ) Example: “20140710145030” = July 10, 2014, 2:50:30 pm. NOTE 1: this message affects any date/time event (including FW upgrade) so it needs to precede the fwDownldTm and fwImplTm tags. NOTE 2: in order to limit flash write operations, the current rctTime of a device will not be changed if it is already within +/- 5mins of the specified time. For ENGAGE 6.0 Firmware and later this value has been changed to 1 minute for all ENGAGE products.</td>
<td></td>
</tr>
<tr>
<td>Immediate WiFi Alert Enable</td>
<td>wifiAlertEn</td>
<td>String/1</td>
<td>“T” = enabled (default), ”F” = disabled, “S” = limit immediate alert reporting to the selection made in wifiAlertSel. NOTE: Conflicting settings between this tag and wifiAlertSel (e.g. a list of alerts specified in wifiAlertSel but wifiAlertEn is “F”) will result in the last tag processed being used.</td>
<td>SC</td>
</tr>
<tr>
<td>Individual WiFi Immediate Alert Selection</td>
<td>wifiAlertSel</td>
<td>Array of String/6s</td>
<td><em>See separate document for Audit &amp; Alert Definitions (Alert Type Only)</em></td>
<td>SC</td>
</tr>
<tr>
<td>Firmware Address</td>
<td>fwurl</td>
<td>String/64</td>
<td>Max 64 characters NOTE 1: The config PUT from the lock presents a different tag “fwUrl” than what it consumes “fwurl”. NOTE 2: NDE Firmware revisions &lt; 02.06.12 only support a fixed url endpoint: http://&lt;host&gt;/api/firmware/latest It is suggested that a symbolic link or copy of the latest NDE binary firmware be placed at this endpoint if supporting older NDE firmware versions &lt;02.06.12. When using an ENGAGE mobile application to connect to an NDE lock running these older firmware versions, the ‘Update Firmware’ option will be visible and will command these locks to the fixed endpoint for ease of upgrade and to allow updating of a lock to a firmware revision that supports root certificate change.</td>
<td>SC</td>
</tr>
<tr>
<td>Firmware download Time</td>
<td>fwDwnldTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140527040000” May 27, 2014, 4:00:00 am Value of “0” will result in immediate download. NOTE: All revisions of NDE, LE, and SC only support a value of “0” (immediate download) currently.</td>
<td></td>
</tr>
<tr>
<td>Firmware Implement/Update Time</td>
<td>fwImplTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140603030000” June 3, 2014, 3:00:00 am Value of “0” will result in immediate update/implement. NOTE: Prior to ENGAGE 6.0 revisions of NDE, LE, and SC only support a value of “0” (implement immediately) currently. ENGAGE 6.0 and later process this tag as expected.</td>
<td></td>
</tr>
<tr>
<td>DPS Audits Enable</td>
<td>dpsEn</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC</td>
</tr>
<tr>
<td>Beeper En</td>
<td>bprEn</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>CTE</td>
</tr>
<tr>
<td>Reader Sensitivity</td>
<td>rdrSense</td>
<td>String/4</td>
<td>&quot;norm&quot;, &quot;high&quot;, &quot;max&quot;</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config HID</td>
<td>proxConfHID</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config GECASI</td>
<td>proxConfGECASI</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config GE4001</td>
<td>proxConfGE4001</td>
<td>String/1</td>
<td>“T” = 4001 ”F” = 4002</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config GE4002</td>
<td>proxConfGE4002</td>
<td>String/1</td>
<td>“T” = 4002,”F” = 4001</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config AWID</td>
<td>proxConfAWID</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 14443 UID</td>
<td>uid14443</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 14443 MiFare</td>
<td>mi14443</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 14443 MiFare Plus</td>
<td>mip14443</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 14443 NOC</td>
<td>noc14443</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 15693 iClass SE</td>
<td>iCls15693</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 15693 UID</td>
<td>uid15693</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card iClass UID 40 bit CSN</td>
<td>iClsUID40b</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>PIV Configuration</td>
<td>pivCnfg</td>
<td>String/11</td>
<td>&quot;disbld&quot;,&quot;75bPIV&quot;, &quot;58bTWIC_CAC&quot;, ”14443PIV200b”,&quot;64bBCD_TWIC&quot;,&quot;83bTWIC_CAC&quot;, &quot;66bTWIC_CAC&quot;, &quot;64bTWIC&quot;, &quot;91bTWIC_CAC&quot;, &quot;40bBCD&quot;, &quot;40bRevBCD&quot;, &quot;64bBCD&quot;, &quot;64bRevBCD&quot;, &quot;128bBCD&quot;, &quot;128bRevBCD&quot;, &quot;58bAMAG&quot;</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>iClass Format</td>
<td>iClsFrmt</td>
<td>String/11</td>
<td>“disbld”, “64bCSN”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Mag Card Reader Track 1 Enable</td>
<td>magtrk1</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Mag Card Reader Track 2 Enable</td>
<td>magtrk2</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Mag Card Reader Track 3 Enable</td>
<td>magtrk3</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Mag Card Reader Low Power Enable</td>
<td>magLwPwrEn</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Backlight Timeout</td>
<td>bckLghtTmOut</td>
<td>Unsigned Int/2</td>
<td>0-15 , 0 = disabled</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Keypad Output Format</td>
<td>keypadOutput</td>
<td>String/8</td>
<td>&quot;dsbld&quot;,&quot;format1&quot;,&quot;format2&quot;, &quot;format3&quot;,&quot;format4&quot;,&quot;format5&quot;, &quot;format6&quot;,&quot;format7&quot;,&quot;format8&quot;, &quot;format9&quot;,&quot;format10&quot;, &quot;format11&quot;,&quot;format12&quot;</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Keypad facility code</td>
<td>kpFclCode</td>
<td>Unsigned Int/3</td>
<td>0-255</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Number of keys to buffer/cache</td>
<td>kpBuffCache</td>
<td>Unsigned Int/2</td>
<td>0-15</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Keystroke Timeout</td>
<td>keystrokeTO</td>
<td>Unsigned Int/2</td>
<td>0-15 , 0 = disabled</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>PIN Length</td>
<td>pinLength</td>
<td>Unsigned Int/2</td>
<td>3-16, default 6</td>
<td>NDE, SC, LE, RMRU</td>
</tr>
<tr>
<td>PIN enable (ignore keypad)</td>
<td>pinEn</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU</td>
</tr>
<tr>
<td>Anti-Tailgate (immediate relock on door close)</td>
<td>immRelockEn</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU</td>
</tr>
<tr>
<td>410-IP Communication Failsafe Mode</td>
<td>gatewayCommFail</td>
<td>String/4</td>
<td>“asIs”, “sec”, “safe”</td>
<td>NDE, SC, LE, CTE, RMRU does not support “safe”</td>
</tr>
<tr>
<td>Tamper Cover Removal Failsafe Mode</td>
<td>tamperFail</td>
<td>String/4</td>
<td>“asIs”, “sec”, “safe”</td>
<td>NDE, SC, LE, CTE, RMRU does not support “safe”</td>
</tr>
<tr>
<td>Invalid Card Presented Audit</td>
<td>invCrdAudEn</td>
<td>String/1</td>
<td>“F”=Do not create an audit for invalid card presentations (Default) “T”= Create an audit for invalid card presentations Please note that if this configuration is enabled the edge device audits should be checked regularly to ensure that the edge device audit buffer is not inadvertently filled with invalid card presentation audits</td>
<td>RMRU</td>
</tr>
<tr>
<td>WiFi Download Retry Time Interval</td>
<td>wifiDwnldRtyTmIntv</td>
<td>Unsigned Int/4</td>
<td>5-1440 Default Value Setting is 1440 If WiFi event fails, this setting is the number of minutes after the failure that the device should re-try the WiFi event. The retry will continue wifiDwnldRtyCnt times every wifiDwnldRtyTmIntv minutes.</td>
<td>SC</td>
</tr>
<tr>
<td>WiFi Download Retry Counter</td>
<td>wifiDwnldRtyCnt</td>
<td>Unsigned Int/3</td>
<td>1-250 Default Value Setting is 1 If WiFi event fails, this setting is the number of times after the failure that the device should re-try the WiFi event. The retry will continue wifiDwnldRtyCnt times every wifiDwnldRtyTmIntv minutes.</td>
<td>SC</td>
</tr>
<tr>
<td>Invalid Card Presented Audit</td>
<td>invCrdAudEn</td>
<td>String/1</td>
<td>“F”=Do not create an audit for invalid card presentations (Default) “T”= Create an audit for invalid card presentations Please note that if this configuration is enabled the edge device audits should be checked regularly to ensure that the edge device audit buffer is not inadvertently filled with invalid card presentation audits</td>
<td></td>
</tr>
<tr>
<td>Audit ID Enable</td>
<td>auditIDEn</td>
<td>String/1</td>
<td>“F”= The lock will not send the new unique audit identifier with the audit json (default). “T”= The lock will send the new unique audit identifier with the audit JSON</td>
<td></td>
</tr>
<tr>
<td><strong>New Access Point Config</strong></td>
<td><strong>apCfgNew</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td>New AP Config Enable</td>
<td>apCfgNewEn</td>
<td>String/1</td>
<td>“T” = enables new Access Point Config “F” = disables new Access Point Config (default option)</td>
<td>SC</td>
</tr>
<tr>
<td>New SSID</td>
<td>ssidNew</td>
<td>String/32</td>
<td>Max 32 characters</td>
<td>SC</td>
</tr>
<tr>
<td>New AP Password</td>
<td>psswdNew</td>
<td>String/64</td>
<td>Max 63 characters</td>
<td>SC</td>
</tr>
<tr>
<td>New User Name</td>
<td>usrNmNew</td>
<td>String/16</td>
<td>Max 16 characters</td>
<td>SC</td>
</tr>
<tr>
<td>New WiFi Security</td>
<td>wifiSecNew</td>
<td>String/7</td>
<td>“prsnl”, “entrprs”, “open”, ”wep”</td>
<td>SC</td>
</tr>
<tr>
<td>Config Start Time</td>
<td>apCfgNewStrtTm</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS”</td>
<td>SC</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>THE REMAINDER OF THIS TABLE DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND SHOULD BE 
REMOVED FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS. #REMOVE_BEFORE_PUBLISHING</strong></p>
</blockquote>
<table>
<thead>
<tr>
<th>Tag</th>
<th>Short Tag</th>
<th>Type/Length (ASCII bytes)</th>
<th>Value</th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>RSI Parameters</strong></td>
<td><strong>rsiConfigs</strong></td>
<td><strong>Object (parent tag is “config”)</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Deny Access</td>
<td>dnyAccs</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Relock Method</td>
<td>relockMethod</td>
<td>String /5</td>
<td>”tmr”, “drOpn”, “drCls”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Heartbeat Time</td>
<td>rsiHrtbtTm</td>
<td>Unsigned Int/5</td>
<td>0 – 65535</td>
<td>CTE</td>
</tr>
<tr>
<td>Retry times</td>
<td>rsiRtryTm</td>
<td>Unsigned Int/2</td>
<td>1-15</td>
<td>CTE</td>
</tr>
<tr>
<td>Subsequent Delay</td>
<td>rsiSubqtDly</td>
<td>Unsigned Int/2</td>
<td>1-15</td>
<td>CTE</td>
</tr>
<tr>
<td>First Delay</td>
<td>rsiFrstDly</td>
<td>Unsigned Int/2</td>
<td>1-15</td>
<td>CTE</td>
</tr>
<tr>
<td>Cache memory bits per card</td>
<td>cacheMemBts</td>
<td>Unsigned Int/3</td>
<td>0-255</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Clear cache entries</td>
<td>clrCache</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Auto purge</td>
<td>autoPrg</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Communication Failsafe mode</td>
<td>rsiCommFailSfMd</td>
<td>String/6</td>
<td>“disbld”,”sec”,”safe”</td>
<td>CTE, RMRU does not support “safe”</td>
</tr>
<tr>
<td>Cache memory mode</td>
<td>cacheMemMd</td>
<td>String/7</td>
<td>“full”,”fcltyCd”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Maximum number of cache entries</td>
<td>maxCacheEntries</td>
<td>Unsigned Int/3</td>
<td>0-255</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>PIN-Required Mode</td>
<td>pinReqMode</td>
<td>String/12</td>
<td>“disbld”, “grnRedNoBeep”, “grnRedBeep2”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Request to Enter Inquiry Enable</td>
<td>renInquiry</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>IPB LED Blink Enable</td>
<td>ipbLedBlink</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, CTE</td>
</tr>
<tr>
<td>IPB Online Configuration Enable Lock/Unlock</td>
<td>ipbOnlineCfg</td>
<td>String/8</td>
<td>“disbld”,”lckUnlck”</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>IPB Offline Configuration</td>
<td>ipbOfflineCfg</td>
<td>String/8</td>
<td>“disbld”, “lckUnlck”, ”disblRdr”</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>IPB Long Press</td>
<td>ipbLongPress</td>
<td>Unsigned Int/2</td>
<td>0-15</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
</tbody>
</table>
<h3>Retrievable Parameters</h3>
<p>When a host makes a request to the device for information that resides in the
device, it receives all of the retrievable parameters for that device at that time.</p>
<h4>Device Profile</h4>
<p>Later firmware versions of ENGAGE devices include a section that defines the
type and any special type variances (called extensions) supported by the device 
as part of a dvcProfile block contained at the beginning of the config block.</p>
<p>To support a standard of JSON configs moving into the future, the standard has 
been established for all device profiles to be implemented as integers. However, 
because some of the currently established tags do not use this standard, the 
previously implemented tag types will maintain their current implementation 
and the standard will be established for new tags implemented in the future.</p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Device Profile</strong></td>
<td><strong>dvcProfile</strong></td>
<td><strong>Section Heading</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Base Type</td>
<td>baseType</td>
<td>String/8</td>
<td>“rmru”, “nde”, “le”, “mt20w”, “cte”, “be467”, “gwe”</td>
</tr>
<tr>
<td>Extensions</td>
<td>ext</td>
<td>Array</td>
<td>Array of structures of following types:</td>
</tr>
<tr>
<td>Extension’s name</td>
<td>key</td>
<td>String/15</td>
<td><em>See table below for Extension key, custom argument (value) combinations</em></td>
</tr>
<tr>
<td>Extension custom argument</td>
<td>value</td>
<td>String/15</td>
<td></td>
</tr>
</tbody>
</table>
<p>Extensions and their supported custom arguments.</p>
<table>
<thead>
<tr>
<th><strong>Extension key</strong></th>
<th><strong>Extension value</strong></th>
<th><strong>Device Associated</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>undog</td>
<td><em>empty</em></td>
<td>rmru</td>
</tr>
<tr>
<td>WiFiTest</td>
<td>0 = unsupported 1 = Full Update Server 2 = Fast Connection Attempt</td>
<td>nde, le, rmru, mt20w, cte</td>
</tr>
<tr>
<td>jsonHmac</td>
<td>0 = unsupported 1 = HMAC Rev 0 Supported</td>
<td>nde, le, sc, rmru, cte</td>
</tr>
<tr>
<td>dupAuditDet</td>
<td>0 = unsupported 1 = Duplicate Audit Detection supported (auditId provided with audit JSON)</td>
<td>nde, le, sc, rmru, cte</td>
</tr>
<tr>
<td>fwUrlMethod</td>
<td>0 = unsupported 1 = Full URL Sent (Pre-ENGAGE 6.2 firmware will continue support of &quot;URL Path only&quot;) 2 = URL Path only (Server name or address removed)</td>
<td>mt20w</td>
</tr>
<tr>
<td>getAuditNoErase</td>
<td>0 = unsupported 1 = Retrieve Audits without Erase supported</td>
<td>nde, le, sc, rmru, cte</td>
</tr>
<tr>
<td>gweSiteSurvey</td>
<td>0 = unsupported 1 = Site Survey JSON Definition Version 1</td>
<td>gwe</td>
</tr>
<tr>
<td>newAPCfg</td>
<td>0 = unsupported 1 = New Access Point Configuration Supported</td>
<td>nde, le, rmru, cte</td>
</tr>
</tbody>
</table>
<h4>Device Parameters</h4>
<p>Table 7 shows a complete list of all the JSON data tags and values that can
be read by an external device. Some of the retrievable parameters are device 
specific, and may not apply to all devices.</p>
<p>ENGAGE devices report all retrievable parameters in one large block, and
include some parameters that may not directly apply to the device or its
mode of operation. For example; RSI protocol capable devices might report RSI
parameters when the device is not configured for RSI protocol operation.</p>
<p>See the <strong>Device Settings</strong> section for an example of this data structure.</p>
<p><strong>Table 7: Retrievable Parameters</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Battery Voltages</strong></td>
<td><strong>battV</strong></td>
<td><strong>String/5</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Main</td>
<td>main</td>
<td>String/5</td>
<td>“ x.x” to “xx.xx”</td>
<td>CTE</td>
</tr>
<tr>
<td>Lithium</td>
<td>li</td>
<td>String/5</td>
<td>“ x.x” to “xx.xx” (This is always reported as a value of 0 for NDE, LE, CTE, RMRU, and SC) when reported from the GWE.</td>
<td></td>
</tr>
<tr>
<td><strong>Line Voltages</strong></td>
<td><strong>lineV</strong></td>
<td><strong>String/5</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Main</td>
<td>main</td>
<td>String/5</td>
<td>“ x.x” to “xx.xx”</td>
<td>NDE, LE, SC, RMRU</td>
</tr>
<tr>
<td>Power input</td>
<td>power</td>
<td>String/4</td>
<td>“poe”, “poe+”, “line”</td>
<td>NDE, LE, SC, RMRU</td>
</tr>
<tr>
<td><strong>Firmware Versions</strong></td>
<td><strong>fwVer</strong></td>
<td><strong>String/5</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Lock</td>
<td>lock</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td></td>
</tr>
<tr>
<td>Main</td>
<td>main</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td></td>
</tr>
<tr>
<td>Credential Reader</td>
<td>credRdr</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>Bluetooth Module</td>
<td>ble</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td></td>
</tr>
<tr>
<td>WiFi Module</td>
<td>wifi</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td>SC</td>
</tr>
<tr>
<td>Main Bootloader</td>
<td>mainBl</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td></td>
</tr>
<tr>
<td>Credential Reader Bootloader</td>
<td>credRdrBl</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>WiFi MAC Address</td>
<td>macAdr</td>
<td>String/17</td>
<td>“xx.xx.xx.xx.xx.xx”</td>
<td>SC</td>
</tr>
<tr>
<td>Safe Mode Recovery FW version</td>
<td>recoveryFwVer</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td>SC</td>
</tr>
<tr>
<td>Ethernet module</td>
<td>ethernet</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td>SC, RMRU, LE,</td>
</tr>
<tr>
<td>Ethernet module bootloader</td>
<td>ethernetBl</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
<td>NDE, SC, RMRU, LE</td>
</tr>
<tr>
<td>Ethernet MAC Address</td>
<td>ethernetMacAdr</td>
<td>String/17</td>
<td>“xx.xx.xx.xx.xx.xx”</td>
<td>NDE, SC, RMRU, LE</td>
</tr>
<tr>
<td><strong>WiFi Settings</strong></td>
<td><strong>wifiStngs</strong></td>
<td><strong>String/8</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td>SSID</td>
<td>Ssid</td>
<td>String/32</td>
<td>Max 32 characters</td>
<td>SC</td>
</tr>
<tr>
<td>AP Password / Security Key</td>
<td>Psswd</td>
<td>String/64</td>
<td>Max 63 characters</td>
<td>SC</td>
</tr>
<tr>
<td>User Name</td>
<td>usrNm</td>
<td>String/16</td>
<td>Max 16 characters</td>
<td>SC</td>
</tr>
<tr>
<td>WiFi Security</td>
<td>wifiSec</td>
<td>String/7</td>
<td>“prsnl”, “entrprs”, “open”, “wep”</td>
<td>SC</td>
</tr>
<tr>
<td>Key Index</td>
<td>kyIndx</td>
<td>Unsigned Int/1</td>
<td>1,2,3,4</td>
<td>SC</td>
</tr>
<tr>
<td>Discovery Type</td>
<td>dscvryTyp</td>
<td>String/6</td>
<td>“ipAddr”, “dmnNm”, “srvcNm”</td>
<td>SC</td>
</tr>
<tr>
<td>Secure Connection</td>
<td>scrCnn</td>
<td>String/5</td>
<td>“http”, “https”</td>
<td>SC</td>
</tr>
<tr>
<td>IP</td>
<td>Ip</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
<td>SC</td>
</tr>
<tr>
<td>IP DNS Service</td>
<td>ipDNS</td>
<td>String/64</td>
<td>Max 64 characters</td>
<td>SC</td>
</tr>
<tr>
<td>Alternate IP DNS Service</td>
<td>altDNS</td>
<td>String/64</td>
<td>Max 64 characters</td>
<td>SC, NDE, LE, RMRU, CTE</td>
</tr>
<tr>
<td><strong>New Access Point Config</strong></td>
<td><strong>apCfgNew</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td>New AP Config Enable</td>
<td>apCfgNewEn</td>
<td>String/1</td>
<td>“T” = enables new Access Point Config “F” = disables new Access Point Config (default option)</td>
<td>SC</td>
</tr>
<tr>
<td>New SSID</td>
<td>ssidNew</td>
<td>String/32</td>
<td>Max 32 characters</td>
<td>SC</td>
</tr>
<tr>
<td>New AP Password</td>
<td>psswdNew</td>
<td>String/64</td>
<td>Max 63 characters</td>
<td>SC</td>
</tr>
<tr>
<td>New User Name</td>
<td>usrNmNew</td>
<td>String/16</td>
<td>Max 16 characters</td>
<td>SC</td>
</tr>
<tr>
<td>New WiFi Security</td>
<td>wifiSecNew</td>
<td>String/7</td>
<td>“prsnl”, “entrprs”, “open”,”wep”</td>
<td>SC</td>
</tr>
<tr>
<td>Config Start Time</td>
<td>apCfgNewStrtTm</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS”</td>
<td>SC</td>
</tr>
<tr>
<td><strong>Lock Parameters</strong></td>
<td><strong>lockPrmtrs</strong></td>
<td><strong>String/8</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Name</td>
<td>Nm</td>
<td>String/32</td>
<td>“xxxx….….xxxx”</td>
<td></td>
</tr>
<tr>
<td>Model</td>
<td>mdl</td>
<td>String/5</td>
<td>“nde”, “be467”, “fe410”, “lems”, “lemb”, “lemd”, “rm”, “ru”, “cte”</td>
<td></td>
</tr>
<tr>
<td>Lock Operation Mode</td>
<td>lckMode</td>
<td>String/8</td>
<td>“null”, “200”, “210”, “310”, “410rsi”, “410ip”</td>
<td>200 mode not supported on RMRU</td>
</tr>
<tr>
<td>Lock Serial Number</td>
<td>lckSn</td>
<td>String/16</td>
<td>“xxxx….….xxxx”</td>
<td></td>
</tr>
<tr>
<td>Main Serial Number</td>
<td>mainSn</td>
<td>String/16</td>
<td>“xxxx….….xxxx”</td>
<td></td>
</tr>
<tr>
<td>Mfg Date</td>
<td>mfgDt</td>
<td>String/8</td>
<td>“YYYYMMDD” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) Example: “20140527” means May 27, 2014</td>
<td></td>
</tr>
<tr>
<td>Days In Use</td>
<td>daysInUse</td>
<td>Unsigned Int/5</td>
<td>0 – 65536</td>
<td></td>
</tr>
<tr>
<td>Warranty Activation date</td>
<td>wtyAct</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) HH = Hour ( 0 – 23 ) MM = Minutes ( 00 – 59 ) SS = Seconds ( 00 – 59 ) Example: “20140710145030” means July 10, 2014, 2:50:30 pm</td>
<td>NDE, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Hardware Version</td>
<td>hwVer</td>
<td>String/6</td>
<td>“xxxxxx”</td>
<td></td>
</tr>
<tr>
<td>Clock Time</td>
<td>rtcTime</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) HH = Hour ( 00 – 23 ) MM = Minutes ( 00 – 59 ) SS = Seconds ( 00 – 59 ) Example: “20140710145030” means July 10, 2014, 2:50:30 pm</td>
<td></td>
</tr>
<tr>
<td>Type</td>
<td>type</td>
<td>String/6</td>
<td>“strm” “clsrm” “office” “dorm” “apt” “prvcy”</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>Relock</td>
<td>relock</td>
<td>Unsigned Int/3</td>
<td>Delay time in seconds (0-254)</td>
<td>RMRU</td>
</tr>
<tr>
<td>Door Prop Delay</td>
<td>doorProp</td>
<td>Unsigned Int/3</td>
<td>Delay time in seconds (0-254)</td>
<td>SC</td>
</tr>
<tr>
<td>Door Prop Delay Enable</td>
<td>doorPropEn</td>
<td>String/1</td>
<td>“T” = enabled , ”F” = disabled</td>
<td>NDE, LE, SC, RMRU</td>
</tr>
<tr>
<td>ADA Delay</td>
<td>ada</td>
<td>Unsigned Int/3</td>
<td>Delay time in seconds (0-254)</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>First Man In</td>
<td>firstManIn</td>
<td>Int/1</td>
<td>0=No First Man In 1= First Man In</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>Dog On Next Exit</td>
<td>dneEn</td>
<td>Int/1</td>
<td>0=Do not use Dog on Next Exit 1=Schedules Dog on Next Exit</td>
<td>NDE, SC, LE, CTE</td>
</tr>
<tr>
<td>Battery Fail State</td>
<td>battFail</td>
<td>String/4</td>
<td>“asIs”, “safe, “sec”</td>
<td>SC, RMRU can only operate as sec, CTE</td>
</tr>
<tr>
<td>Daylight Saving Time</td>
<td>dstEnable</td>
<td>Int/1</td>
<td>0=DST not observed 1=DST observed</td>
<td></td>
</tr>
<tr>
<td>DST Start</td>
<td>dstStart</td>
<td>String/4</td>
<td>Hour that clocks are moved behind by 1 hour. 3=daylight month start 0=daylight day of week start 2=daylight week # start 2=daylight hour start US default is 3022</td>
<td></td>
</tr>
<tr>
<td>DST End</td>
<td>dstEnd</td>
<td>String /4</td>
<td>Hour that clocks are moved ahead by 1 hr. B=standard month start (1=Jan,…)            0=standard day of week start, 0 = Sun…. 1=standard week # start (1=1st,..5=last) 2=standard hour start US default is B012</td>
<td></td>
</tr>
<tr>
<td>Next Database Download Time</td>
<td>dbDwnLdTm</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) HH = Hour ( 00 – 23 ) MM = Minutes ( 00 – 59 ) SS = Seconds ( 00 – 59 ) Example: “20140527154102” means May 27, 2014, 3:41:02 pm</td>
<td>SC</td>
</tr>
<tr>
<td>Firmware Address</td>
<td>fwUrl</td>
<td>String/64</td>
<td>Max 64 characters NOTE: this is fwUrl though it conveys the same information as fwurl.</td>
<td>SC</td>
</tr>
<tr>
<td>Firmware download Time</td>
<td>fwDwnldTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140527040000” May 27, 2014, 4:00:00 am Value of “0” will result in immediate download.</td>
<td>SC</td>
</tr>
<tr>
<td>Firmware Implement/Update Time</td>
<td>fwImplTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140603030000” June 3, 2014, 3:00:00 am Value of “0” will result in immediate update/implement.</td>
<td>SC</td>
</tr>
<tr>
<td>Next Database Version Time Stamp</td>
<td>nxtDbVerTS</td>
<td>String/18</td>
<td>Hexadecimal value, that starts with 0x, followed by 16 hex digits. (i.e. “0x08d16357eef73a69” )</td>
<td>SC</td>
</tr>
<tr>
<td>Immediate WiFi Alert Enable</td>
<td>wifiAlertEn</td>
<td>String/1</td>
<td>“T” = enabled (default), ”F” = disabled</td>
<td>SC</td>
</tr>
<tr>
<td>Individual WiFi Immediate Alert Selection</td>
<td>wifiAlertSel</td>
<td>Array of Strings/6</td>
<td>See separate document for Audit &amp; Alert Definitions (Alert Type Only)</td>
<td>SC</td>
</tr>
<tr>
<td>Blink Interior LED when locked</td>
<td>blinkIntLed</td>
<td>String/1</td>
<td>“T” = enabled , ”F” = disabled</td>
<td>NDE, SC, CTE</td>
</tr>
<tr>
<td>Privacy Rapid blink</td>
<td>rapidBlink</td>
<td>String/1</td>
<td>“T” = enabled , ”F” = disabled</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>IPB Audit Enable / Disable</td>
<td>ipbAuditEnable</td>
<td>String/1</td>
<td>“T” = enabled , ”F” = disabled</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Lock ID</td>
<td>lockId</td>
<td>Unsigned Int/5</td>
<td>Door ID (0-65534) 65535 no tour disabled on LE locks</td>
<td>NDE, RMRU</td>
</tr>
<tr>
<td>DPS Audit Enable</td>
<td>dpsEn</td>
<td>String/1</td>
<td>“T” or “F”</td>
<td>SC</td>
</tr>
<tr>
<td>Database Update Status</td>
<td>dbUpdateStatus</td>
<td>Unsigned Int/3</td>
<td>0=Reset/download not started 1=JSON data Download completed 2=DB Update Completed</td>
<td>SC, RMRU</td>
</tr>
<tr>
<td>PIN Length</td>
<td>pinLength</td>
<td>Unsigned Int/2</td>
<td>3-16</td>
<td>NDE, SC, LE, RMRU</td>
</tr>
<tr>
<td>PIN Enable</td>
<td>pinEn</td>
<td>String/1</td>
<td>“T” or “F”</td>
<td>NDE, SC, LE, RMRU</td>
</tr>
<tr>
<td>Anti-Tailgate (Immediate relock on door close)</td>
<td>immRelockEn</td>
<td>String/1</td>
<td>“T” or “F”</td>
<td>NDE, SC, LE, RMRU</td>
</tr>
<tr>
<td>410-IP Communication Failsafe Mode</td>
<td>gatewayCommFail</td>
<td>String/4</td>
<td>“asIs”, “sec”, “safe”</td>
<td>NDE, SC, LE, CTE, RMRU does not support “safe”</td>
</tr>
<tr>
<td>Tamper Cover Removal Failsafe Mode</td>
<td>tamperFail</td>
<td>String/4</td>
<td>“asIs”, “sec”, “safe”</td>
<td>NDE, SC, LE, CTE, RMRU does not support “safe”</td>
</tr>
<tr>
<td>Invalid Card Presented Audit</td>
<td>invCrdAudEn</td>
<td>String/1</td>
<td>“F”=Do not create an audit for invalid card presentations (Default) “T”= Create an audit for invalid card presentations Please note that if this configuration is enabled the edge device audits should be checked regularly to ensure that the edge device audit buffer is not inadvertently filled with invalid card presentation audits</td>
<td>RMRU</td>
</tr>
<tr>
<td>Audit ID Enable</td>
<td>auditIDEn</td>
<td>String/1</td>
<td>“F”= The lock will not send the new unique audit identifier with the audit json (default). “T”= The lock will send the new unique audit identifier with the audit JSON</td>
<td></td>
</tr>
<tr>
<td>WiFi Download Retry Time Interval</td>
<td>wifiDwnldRtyTmIntv</td>
<td>Unsigned Int/4</td>
<td>5-1440 Default Value Setting is 1440 If WiFi event fails, this setting is the number of minutes after the failure that the device should re-try the WiFi event. The retry will continue wifiDwnldRtyCnt times every wifiDwnldRtyTmIntv minutes.</td>
<td>SC</td>
</tr>
<tr>
<td>WiFi Download Retry Counter</td>
<td>wifiDwnldRtyCnt</td>
<td>Unsigned Int/3</td>
<td>1-250 Default Value Setting is 1 If WiFi event fails, this setting is the number of times after the failure that the device should re-try the WiFi event. The retry will continue wifiDwnldRtyCnt times every wifiDwnldRtyTmIntv minutes.</td>
<td>SC</td>
</tr>
<tr>
<td><strong>Reader Parameters</strong></td>
<td><strong>rdrPrmtrs</strong></td>
<td><strong>String/7</strong></td>
<td><strong>N/A</strong></td>
<td><strong>RMRU, CTE</strong></td>
</tr>
<tr>
<td>Beeper Enable</td>
<td>bprEn</td>
<td>String/1</td>
<td>“T” or “F”</td>
<td>CTE</td>
</tr>
<tr>
<td>Reader Sensitivity</td>
<td>rdrSense</td>
<td>String/4</td>
<td>&quot;norm&quot;, &quot;high&quot;, &quot;max&quot;</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Days In Use</td>
<td>daysInUse</td>
<td>Unsigned Int/5</td>
<td>0 - 65536</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Serial Number</td>
<td>sn</td>
<td>String 10</td>
<td>“xxxxxxxxxx”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Hardware Version</td>
<td>hwVer</td>
<td>String/6</td>
<td>“xxxxxx”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Manufacture Date</td>
<td>mfgDt</td>
<td>String/8</td>
<td>“YYYYMMDD” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) Example: “20140527” means May 27, 2014</td>
<td>SC, CTE</td>
</tr>
<tr>
<td>Config Card Presented Status (Read Only)</td>
<td>configCrdPrsntd</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE, SC</td>
</tr>
<tr>
<td>Prox Config HID</td>
<td>proxConfHID</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config GECASI</td>
<td>proxConfGECASI</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config GE4001</td>
<td>proxConfGE4001</td>
<td>String/1</td>
<td>“T” = 4001 ”F” = 4002</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config GE4002</td>
<td>proxConfGE4002</td>
<td>String/1</td>
<td>“T” = 4002,”F” = 4001</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Prox Config AWID</td>
<td>proxConfAWID</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 14443 UID</td>
<td>uid14443</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE, SC</td>
</tr>
<tr>
<td>Smart Card 14443 MiFare</td>
<td>mi14443</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE, SC</td>
</tr>
<tr>
<td>Smart Card 14443 MiFare Plus</td>
<td>mip14443</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 14443 NOC</td>
<td>noc14443</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 15693 iClass SE</td>
<td>iCls15693</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>Smart Card 15693 UID</td>
<td>uid15693</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE, SC</td>
</tr>
<tr>
<td>Smart Card iClass UID 40 bit CSN</td>
<td>iClsUID40b</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE, SC</td>
</tr>
<tr>
<td>PIV Configuration</td>
<td>pivCnfg</td>
<td>String/11</td>
<td>&quot;disbld&quot;,&quot;75bPIV&quot;,&quot;58bTWIC_CAC&quot; &quot;14443PIV200b&quot;,&quot;64bBCD_TWIC&quot; &quot;83bTWIC_CAC&quot;,&quot;66bTWIC_CAC&quot; &quot;64bTWIC&quot;,&quot;91bTWIC_CAC&quot; &quot;40bBCD&quot;,&quot;40bRevBCD&quot;,&quot;64bBCD&quot;,&quot;64bRevBCD&quot;,&quot;128bBCD&quot;, &quot;128bRevBCD&quot;,&quot;58bAMAG&quot;</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>iClass Format</td>
<td>iClsFrmt</td>
<td>String/11</td>
<td>“disbld”, “64bCSN”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Mag Card Reader Track 1 Enable</td>
<td>magtrk1</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Mag Card Reader Track 2 Enable</td>
<td>magtrk2</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Mag Card Reader Track 3 Enable</td>
<td>magtrk3</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Mag Card Reader Low Power Enable</td>
<td>magLwPwrEn</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Backlight Timeout</td>
<td>bckLghtTmOut</td>
<td>Unsigned Int/2</td>
<td>0-15 , 0 = disabled</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Keypad Output Format</td>
<td>keypadOutput</td>
<td>String/10</td>
<td>&quot;dsbld&quot;,&quot;format1&quot;,&quot;format2&quot;, &quot;format3&quot;,&quot;format4&quot;,&quot;format5&quot;, &quot;format6&quot;,&quot;format7&quot;,&quot;format8&quot;, &quot;format9&quot;,&quot;format10&quot;, &quot;format11&quot;,&quot;format12&quot;</td>
<td>N, SC, L, RMRU, CTE</td>
</tr>
<tr>
<td>Keypad facility code</td>
<td>kpFclCode</td>
<td>Unsigned Int/3</td>
<td>0-255</td>
<td>NDE, SC, LE, RMRU,CTE</td>
</tr>
<tr>
<td>Number of keys to buffer/cache</td>
<td>kpBuffCache</td>
<td>Unsigned Int/2</td>
<td>0-15</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Keystroke Timeout</td>
<td>keystrokeTO</td>
<td>Unsigned Int/2</td>
<td>0-15 , 0 = disabled</td>
<td>NDE, SC, LE, RMRU, CTE</td>
</tr>
<tr>
<td>Custom Key Installation Status</td>
<td>customKeyPrsntd</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, SC</td>
</tr>
<tr>
<td><strong>Device Parameters</strong></td>
<td><strong>rsiPrmtrs</strong></td>
<td><strong>String/8</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Deny Access</td>
<td>dnyAccs</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Relock Method</td>
<td>relockMethod</td>
<td>String/9</td>
<td>”tmr”, “drOpn”, “drCls”</td>
<td>SC, RMRU, CTE</td>
</tr>
<tr>
<td>Heartbeat Time</td>
<td>rsiHrtbtTm</td>
<td>Unsigned Int/5</td>
<td>0 – 65535</td>
<td>CTE</td>
</tr>
<tr>
<td>Retry times</td>
<td>rsiRtryTm</td>
<td>Unsigned Int/2</td>
<td>1-15</td>
<td>CTE</td>
</tr>
<tr>
<td>Subsequent Delay</td>
<td>rsiSubqtDly</td>
<td>Unsigned Int/2</td>
<td>1-15</td>
<td>CTE</td>
</tr>
<tr>
<td>First Delay</td>
<td>rsiFrstDly</td>
<td>Unsigned Int/2</td>
<td>1-15</td>
<td>CTE</td>
</tr>
<tr>
<td>Cache memory bits per card</td>
<td>cacheMemBts</td>
<td>Unsigned Int/3</td>
<td>0-255</td>
<td>RMRU, C</td>
</tr>
<tr>
<td>Clear cache entries</td>
<td>clrCache</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, C</td>
</tr>
<tr>
<td>Auto purge</td>
<td>autoPrg</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Communication Failsafe mode</td>
<td>rsiComm FailSfMd</td>
<td>String/6</td>
<td>“disbld”,”sec”,”safe”</td>
<td>CTE</td>
</tr>
<tr>
<td>Cache memory mode</td>
<td>cacheMemMd</td>
<td>String/7</td>
<td>“full”,”fcltyCd”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Maximum number of cache entries</td>
<td>maxCacheEntries</td>
<td>Unsigned Int/3</td>
<td>0-255</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>PIN-Required Mode</td>
<td>pinReqMode</td>
<td>String/12</td>
<td>“disbld”, “GrnRedNoBeep”, “GrnRedBeep2”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>Request to Enter Inquiry Enable</td>
<td>renInquiry</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>RMRU, CTE</td>
</tr>
<tr>
<td>IPB LED Blink Enable</td>
<td>ipbLedBlink</td>
<td>String/1</td>
<td>“T”,”F”</td>
<td>NDE, SC, CTE</td>
</tr>
<tr>
<td>IPB Online Configuration Enable Lock/Unlock</td>
<td>ipbOnlineCfg</td>
<td>String/8</td>
<td>“disbld”,”lckUnlk”</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>IPB Offline Configuration</td>
<td>ipbOfflineCfg</td>
<td>String/8</td>
<td>“disbld”,”lckUnlk”,”dsbRdr”</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>IPB Long Press</td>
<td>ipbLongPress</td>
<td>Unsigned Int/2</td>
<td>0-15</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>RSI APM Type</td>
<td>rsiApmType</td>
<td>Unsigned Int/2</td>
<td>00 to 13 reserved (see RSI doc) 14 = NDE 15 = ADE 16 = BE467/FE410 17 = LE 18 = RMRU</td>
<td>CTE</td>
</tr>
<tr>
<td>RSI Reader Type</td>
<td>rsiRdrType</td>
<td>Unsigned Int/3</td>
<td>00 to 66 reserved (see RSI doc) 67=NDE_MT2_NO_KPD 68=CONTROL_SM2_NO_KPD 69=LE_MT2_NO_KPD 255=No Model Information</td>
<td>RMRU, CTE</td>
</tr>
</tbody>
</table>
<p><strong>NOTE:</strong> For ENGAGE 6.1 and later devices, devices configured for IP or stand-alone 
communication may not transmit their RSI parameters (rsiPrmtrs) or any children tags 
under the RSI parameters as they are not relevant to IP or stand-alone operation. 
The device will accept any changes to the RSI parameters if they are provided to the 
device, however the device will not provide the updated information back to the host.</p>
<h3>Retrievable Parameters for Real-Time Service / Decision at Door</h3>
<p><strong>THIS SECTION DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND SHOULD BE REMOVED 
FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS. #REMOVE_BEFORE_PUBLISHING</strong></p>
<p>When a host makes a request to the device for information about the real-time access 
control service, it will receive the parameters at that time that are specific to the 
“410-IP” or “Decision At Door” device mode where the device is connected to an IP-connected 
Gateway.</p>
<p>Table 8 describes the Retrievable Parameters for Real-Time Service / Decision at Door.</p>
<p><strong>Table 8: Retrievable Parameters for Real-Time Service / Decision at Door</strong></p>
<table>
<thead>
<tr>
<th>Tag</th>
<th>Short Tag</th>
<th>Type/Length (ASCII bytes)</th>
<th>Value</th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Real Time Subscription Information</strong></td>
<td><strong>realTimeSubscription</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>Subscription Capabilities</strong></td>
<td><strong>subscriptionCapabilities</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>RTAC Device Audit Parameters</strong></td>
<td><strong>deviceAudits</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>RTAC Rex Parameters</strong></td>
<td><strong>rexActive</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td><strong>RTAC FDR Parameters</strong></td>
<td><strong>fdrActive</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>RTAC Tamper Parameters</strong></td>
<td><strong>tamperOpen</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td><strong>RTAC Mag Tamper Parameters</strong></td>
<td><strong>magTamperDetected</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC, LE, CTE</strong></td>
</tr>
<tr>
<td><strong>RTAC RTCC Status</strong></td>
<td><strong>rtccStatus</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>RTAC Lock Position</strong></td>
<td><strong>lockPosition</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>RTAC Aux Position</strong></td>
<td><strong>auxPosition</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>NDE, SC, RMRU, LE</strong></td>
</tr>
<tr>
<td><strong>RTAC Alarm Position</strong></td>
<td><strong>alarmPosition</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>NDE, SC, RMRU, LE</strong></td>
</tr>
<tr>
<td><strong>RTAC Reader Tamper Parameters</strong></td>
<td><strong>rdrTamperDetected</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>NDE, SC, RMRU, LE</strong></td>
</tr>
<tr>
<td><strong>RTAC Lock State</strong></td>
<td><strong>lockState</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>RTAC Primary Battery Status</strong></td>
<td><strong>primaryBatteryStatus</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>CTE</strong></td>
</tr>
<tr>
<td><strong>RTAC Door Position</strong></td>
<td><strong>doorOpen</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td><strong>RTAC IPB parameters</strong></td>
<td><strong>ipbActive</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>NDE, SC, RMRU, CTE</strong></td>
</tr>
<tr>
<td><strong>RTAC Latchbolt Extended</strong></td>
<td><strong>latchBoltExtended</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>NDE, SC, LE, CTE</strong></td>
</tr>
<tr>
<td><strong>RTAC Deadbolt Position</strong></td>
<td><strong>deadBoltExtended</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>NDE, SC, RMRU, CTE</strong></td>
</tr>
<tr>
<td><strong>RTAC REN Parameters</strong></td>
<td><strong>renActive</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>NDE, SC, RMRU, LE</strong></td>
</tr>
<tr>
<td><strong>RTAC REL Parameters</strong></td>
<td><strong>relActive</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>NDE, SC, RMRU, LE</strong></td>
</tr>
<tr>
<td><strong>RTAC Enumerations for each Tag Used</strong></td>
<td><strong>values</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Tag Used</td>
<td>tag</td>
<td>String/4</td>
<td>“0x90” through “0xDF” used by “deviceAudits”, “rexActive”, etc.</td>
<td></td>
</tr>
</tbody>
</table>
<h3>Subscription for Real-Time Service / Decision at Door</h3>
<p><strong>THIS SECTION DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND SHOULD BE REMOVED 
FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS. #REMOVE_BEFORE_PUBLISHING</strong></p>
<p>When a host wishes to subscribe to a particular RTAC tag as described in the previous section, 
it will send a JSON data structure with a list of tags to subscribe to.</p>
<p>Table 9 describes the JSON Subscription Information for Real-Time Service / Decision at Door.</p>
<p><strong>Table 9: JSON Subscription Information</strong></p>
<table>
<thead>
<tr>
<th>Tag</th>
<th>Short Tag</th>
<th>Type/Length (ASCII bytes)</th>
<th>Value</th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Real Time Subscription Information</strong></td>
<td><strong>realTimeSubscription</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td><strong>Subscriptions</strong></td>
<td><strong>subscriptionList</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>RTAC Device Audit Parameters</td>
<td>deviceAudits</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td></td>
</tr>
<tr>
<td>RTAC Rex Parameters</td>
<td>rexActive</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>SC</td>
</tr>
<tr>
<td>RTAC Ren Parameters</td>
<td>renActive</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>SC, NDE, RMRU, LE</td>
</tr>
<tr>
<td>RTAC Rel Parameters</td>
<td>relActive</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>SC, NDE, RMRU, LE</td>
</tr>
<tr>
<td>RTAC FDR Parameters</td>
<td>fdrActive</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td></td>
</tr>
<tr>
<td>RTAC Tamper Parameters</td>
<td>tamperOpen</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>SC</td>
</tr>
<tr>
<td>RTAC Mag Tamper Parameters</td>
<td>magTamperDetected</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>SC, LE</td>
</tr>
<tr>
<td>RTAC Reader Tamper Parameters</td>
<td>rdrTamperDetected</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>SC, NDE, LE, RMRU</td>
</tr>
<tr>
<td>RTAC RTCC Status</td>
<td>rtccStatus</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td></td>
</tr>
<tr>
<td>RTAC Lock Position</td>
<td>lockPosition</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td></td>
</tr>
<tr>
<td>RTAC Lock Clutch Position</td>
<td>lockClutchPosition</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>SC, NDE, LE, CTE</td>
</tr>
<tr>
<td>RTAC Aux Position</td>
<td>auxPosition</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>NDE, LE, SC, RMRU</td>
</tr>
<tr>
<td>RTAC Alarm Position</td>
<td>alarmPosition</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>NDE, LE, SC, RMRU</td>
</tr>
<tr>
<td>RTAC Lock State</td>
<td>lockState</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td></td>
</tr>
<tr>
<td>RTAC Primary Battery Status</td>
<td>primaryBatteryStatus</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>CTE</td>
</tr>
<tr>
<td>RTAC IPB Parameters</td>
<td>ipbActive</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>NDE, SC, RMRU, CTE</td>
</tr>
<tr>
<td>RTAC Latchbolt Extended</td>
<td>latchBoltExtended</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>NDE, SC, LE, CTE</td>
</tr>
<tr>
<td>RTAC Deadbolt Position</td>
<td>deadBoltExtended</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>NDE, RMRU, CTE</td>
</tr>
<tr>
<td>RTAC Door Position</td>
<td>doorOpen</td>
<td>String/1</td>
<td>“T” – Subscribe “F” – No subscription</td>
<td>SC</td>
</tr>
</tbody>
</table>
<h2>Audit Trail Reporting</h2>
<p>To minimize the amount of data transfer time, the device will only send audits
that have never been successfully transferred to the host. Appended to the end
of an audit trail transmission is the device’s current value for the
“nxtDbVerTS”. Appending this time stamp to the end of the audit trail block also
ensures that the device and host are synchronized. If the JSON configuration tag
“lockId” is changed, this tag will also be appended to the end of the audit
trail transmission.</p>
<p>Table 10 describes an audit trail record JSON data structure.</p>
<p><strong>Table 10: Audit Trail Record</strong></p>
<table>
<thead>
<tr>
<th>Tag</th>
<th>Short Tag</th>
<th>Type/Length (ASCII bytes)</th>
<th>Value</th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Audits</strong></td>
<td><strong>audits</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Audit Trail Event</td>
<td>event</td>
<td>String/8</td>
<td><em>See separate document for Audit &amp; Alert Definitions.</em></td>
<td></td>
</tr>
<tr>
<td>Time Stamp</td>
<td>time</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) HH = Hour ( 00 – 23 ) MM = Minutes ( 00 – 59 ) SS = Seconds ( 00 – 59 ) Example: “20140809134522” means August 9, 2014, 1:45:22 pm</td>
<td></td>
</tr>
<tr>
<td>Audit ID</td>
<td>auditId</td>
<td>String/3</td>
<td>0 – 255 (If “auditIDEn” tag = “T”)</td>
<td></td>
</tr>
<tr>
<td>Next Database Version Time Stamp</td>
<td>nxtDbVerTS</td>
<td>String/18</td>
<td>Hexadecimal value, which starts with 0x, followed by 16 hex digits. (i.e. “0x08d16357eef73a69” )</td>
<td></td>
</tr>
<tr>
<td>Lock ID</td>
<td>lockId</td>
<td>Unsigned Int/5</td>
<td>Door ID (0-65534) 65535 disables no tour on LE locks</td>
<td>RMRU</td>
</tr>
</tbody>
</table>
<h2>Asynchronous Events/Alerts Reporting</h2>
<p>Asynchronous Events/Alerts are actions that occur at the device and must be
reported back to the host device. These events are the same event codes that are
used for audit trail entries. For networked devices asynchronous events are sent
individually, at the time the actual event occurs.</p>
<p><strong>Table 11: Asynchronous Event Record</strong></p>
<table>
<thead>
<tr>
<th>Tag</th>
<th>Short Tag</th>
<th>Type/Length (ASCII bytes)</th>
<th>Value</th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Asynchronous Event</strong></td>
<td><strong>asyncEvent</strong></td>
<td><strong>String/10</strong></td>
<td><strong>N/A</strong></td>
<td></td>
</tr>
<tr>
<td>Asynchronous Event</td>
<td>event</td>
<td>String/8</td>
<td>See separate document for <em>Audit &amp; Alert Definitions.</em></td>
<td></td>
</tr>
<tr>
<td>Time Stamp</td>
<td>time</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS” YYYY = Year MM = Month ( 01 – 12 ) DD = Day ( 01 – 31 ) HH = Hour ( 00 – 23 ) MM = Minutes ( 00 – 59 ) SS = Seconds ( 00 – 59 ) Example: “20140809134522” means August 9, 2014, 1:45:22 pm</td>
<td></td>
</tr>
</tbody>
</table>
<p>The asynchronous events that are reported in real time are listed below.
Note that the real time reporting of these alerts can be suppressed using
the wifiAlertEn config tag. This tag must proceed the wifiAlertSel tag
populated with an empty array. Additionally, the dpsEn config tag can be
used to stop the reporting of the Forced Door and Magnetic Tamper alerts and
audits, as well stopping the Propped Door audit from reporting.</p>
<p><strong>210 or 410</strong></p>
<ul>
<li>
<p>Forced Door Alert - unexpected door position movement detected</p>
</li>
<li>
<p>Tamper Alert - lock tampering detected</p>
</li>
<li>
<p>Low Battery - battery voltage &lt;= 4.5V (N, LE) ; 4.6V (SC); 5.0V (RMRU)</p>
</li>
<li>
<p>Critical Battery - battery voltage &lt;= 4V (N, LE) ; 4.3V (SC); 4.8V (RMRU)</p>
</li>
<li>
<p>Magnetic Tamper Alert - door position sensor tampering detected</p>
</li>
<li>
<p>Corrupt database - user access database corruption detected</p>
</li>
<li>
<p>Reader Tamper Alert - reader tampering detected (CTE)</p>
</li>
</ul>
<h2>WiFi Device Commissioning</h2>
<p>If the device is to be configured with WiFi communication directly to the host,
the device requires several different parameters that are associated with the
ability to login to a host system.</p>
<p>This data is sent from the mobile application during the commissioning process.</p>
<p><strong>Table 12: WiFi Commissioning Record</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>WiFiCommision</strong></td>
<td><strong>wifiCmsh</strong></td>
<td><strong>String/8</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td>Save Configurations</td>
<td>saveCnfgs</td>
<td>String/1</td>
<td>“T” = enables Wifi operation “F” = disables Wifi operation</td>
<td>SC</td>
</tr>
<tr>
<td><strong>Access Point Config</strong></td>
<td><strong>apCnfg</strong></td>
<td><strong>String/6</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td>SSID</td>
<td>ssid</td>
<td>String/32</td>
<td>Max 32 characters</td>
<td>SC</td>
</tr>
<tr>
<td>AP Password</td>
<td>psswd</td>
<td>String/64</td>
<td>Max 63 characters</td>
<td>SC</td>
</tr>
<tr>
<td>User Name</td>
<td>usrNm</td>
<td>String/16</td>
<td>Max 16 characters</td>
<td>SC</td>
</tr>
<tr>
<td>WiFi Security</td>
<td>wifiSec</td>
<td>String/7</td>
<td>“prsnl”, “entrprs”, “open”,”wep”</td>
<td>SC</td>
</tr>
<tr>
<td>Key Index</td>
<td>kyIndx</td>
<td>Unsigned Int/1</td>
<td>1,2,3,4</td>
<td>SC*</td>
</tr>
<tr>
<td><strong>Host Config</strong></td>
<td><strong>hstCnfg</strong></td>
<td><strong>String/7</strong></td>
<td><strong>N/A</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td>Discovery Type</td>
<td>dscvryTyp</td>
<td>String/6</td>
<td>“ipAddr”, “dmnNm”, “srvcNm”</td>
<td>SC</td>
</tr>
<tr>
<td>Secure Connection</td>
<td>scrCnn</td>
<td>String/5</td>
<td>“http”, “https”</td>
<td>SC</td>
</tr>
<tr>
<td>IP</td>
<td>ip</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
<td>SC</td>
</tr>
<tr>
<td>IP DNS Service</td>
<td>ipDNS</td>
<td>String/64</td>
<td>Max 64 characters</td>
<td>SC</td>
</tr>
<tr>
<td>Alternate IP DNS Service</td>
<td>altDNS</td>
<td>String/64</td>
<td>Max 64 characters</td>
<td>SC, NDE, LE, RMRU, CTE</td>
</tr>
</tbody>
</table>
<p>*Only NDE supports “kyIndx” = 1 till 4 (if configured through host). Usage of
a Key Index other than 1 is not recommended. For LE, RMRU, MT20W, CTE and ENGAGE
Mobile Application “kyIndx” = 1.</p>
<h2>Keyed-Hashing for Message Authentication (HMAC)</h2>
<p>Keyed-Hashing for Message Authentication (HMAC) Authentication, by an IP Host,
BLE enabled mobile application, or ENGAGE™ device, requires JSON structures that
allows the use of a securing method for JSON General Parameter communications
and methods to allow reception device targeting and contextual time relevance.</p>
<h3>General Parameters JSON Object</h3>
<p>To isolate the general parameters of a device, the general parameters JSON
object is required and this object and all of its content are required when JSON
Message Authentication is enabled for the site</p>
<p><strong>Table 13: General Parameters JSON Object</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>HMAC Message Serial Number</td>
<td>mainSN</td>
<td>String/16</td>
<td>The lower 8 bytes, in hexadecimal format, of the device serial number which the message is intended for</td>
<td>SC</td>
</tr>
<tr>
<td>HMAC Message Time Stamp</td>
<td>msgTS</td>
<td>String/17</td>
<td>The first two byte must be 0x, followed by 15 Hexi-decimal digits</td>
<td>SC</td>
</tr>
<tr>
<td>HMAC Enable</td>
<td>hmacEnable</td>
<td>String/6</td>
<td>“T” = HMAC validation is required on the received message “F” = HMAC validation is not required on the received message</td>
<td>SC</td>
</tr>
</tbody>
</table>
<h3>Hash Message Authentication Code (HMAC) Data JSON Object</h3>
<p>To isolate the HMAC data parameters of a device the HMAC data JSON object
was created. Each tag within the HMAC Data JSON Object is required in messages 
that have the HMAC-based JSON Message Authentication enabled for a site.</p>
<p><strong>Table 14: Hash Message Authentication Code (HMAC) Data JSON Object</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>HMAC Type</strong></td>
<td><strong>hmacType</strong></td>
<td><strong>String/16</strong></td>
<td><strong>Instruct the device which type of HMAC hashing algorithm to use</strong></td>
<td><strong>SC</strong></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><strong>0= not valid</strong></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><strong>1= SHA1-type hashing</strong></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><strong>2-7= reserved</strong></td>
<td></td>
</tr>
<tr>
<td>HMAC Digest</td>
<td>hmac</td>
<td>String/64</td>
<td>40 hexadecimal digit result of the HMAC hashing algorithm. The input to the HMAC hashing algorithm is the entire message excluding the HMAC value itself.</td>
<td>SC</td>
</tr>
</tbody>
</table>
<h1>Examples of Device JSON Databases</h1>
<h2>User Records, deleteAll Tag Set</h2>
<p>The following JSON data structure excerpt represents how the user record data
structure might look if a user list was being sent for the very first time or
when the current user list needs to be erased and populated with a new user
list. Note the value of “deleteAll” is set to 1, which signifies that the
database should replace the existing database.</p>
<pre><code>{
 &quot;db&quot;: {
    &quot;usrRcrd&quot;: {
    &quot;deleteAll&quot;: 1,
    &quot;delete&quot;: [],
    &quot;update&quot;: [],
    &quot;add&quot;: [
     {
      &quot;usrID&quot;: &quot;64&quot;,
      &quot;adaEn&quot;: 0,
      &quot;actDtTm&quot;: &quot;20140101000000&quot;,
      &quot;expDtTm&quot;: &quot;20200101000000&quot;,
      &quot;fnctn&quot;: &quot;norm&quot;,
      &quot;crSch&quot;: [1, 3],
      &quot;primeCr&quot;: &quot;01020304050607080910111213141516&quot;,
      &quot;prCrTyp&quot;: &quot;card&quot;
     },
     {
      &quot;usrID&quot;: &quot;146&quot;,
      &quot;adaEn&quot;: 1,
      &quot;actDtTm&quot;: &quot;20100101000000&quot;,
      &quot;expDtTm&quot;: &quot;20200101000000&quot;,
      &quot;fnctn&quot;: &quot;norm&quot;,
      &quot;crSch&quot;: [1, 3],
      &quot;primeCr&quot;: &quot;16151413121110090807060504030201&quot;,
      &quot;prCrTyp&quot;: &quot;card&quot;
    }]
}
</code></pre>
 
<h2>User Records, deleteAll Tag Cleared</h2>
<p>The following JSON data structure excerpt represents how the user record
data structure might look if an updated user list was being sent to the
device. This list might contain a set of users to delete, update and add.</p>
<p><strong>NOTE:</strong> The value of “deleteAll” is set to 0, which signifies that the existing
database in the device should be updated.</p>
<pre><code>{
 &quot;db&quot;: {
   &quot;usrRcrd&quot;: {
   &quot;deleteAll&quot;: 0,
   &quot;delete&quot;: [
    {
     &quot;primeCr&quot;: &quot;02030405060708091011121314151617&quot;,
     &quot;prCrTyp&quot;: &quot;card&quot;
    },
    {
     &quot;primeCr&quot;: &quot;17161514131211100908070605040302&quot;,
     &quot;prCrTyp&quot;: &quot;card&quot;
    },
    {
     &quot;primeCr&quot;: &quot;03040506070809101112131415161718&quot;,
     &quot;prCrTyp&quot;: &quot;card&quot;
    }
  ],
  &quot;update&quot;: [
    {
     &quot;usrID&quot;: &quot;149&quot;,
     &quot;adaEn&quot;: 1,
     &quot;actDtTm&quot;: &quot;20100101000000&quot;,
     &quot;expDtTm&quot;: &quot;20200101000000&quot;,
     &quot;fnctn&quot;: &quot;toggle&quot;,
     &quot;crSch&quot;: [1],
     &quot;primeCr&quot;: &quot;16151413121110090807060504030201&quot;,
     &quot;prCrTyp&quot;: &quot;card&quot;
    }
  ],
   &quot;add&quot;: [
    {
     &quot;usrID&quot;: &quot;148&quot;,
     &quot;adaEn&quot;: 0,
     &quot;actDtTm&quot;: &quot;20100101000000&quot;,
     &quot;expDtTm&quot;: &quot;20200101000000&quot;,
     &quot;fnctn&quot;: &quot;norm&quot;,
     &quot;crSch&quot;: [1],
     &quot;primeCr&quot;: &quot;01020304050607080910111213141516&quot;,
     &quot;prCrTyp&quot;: &quot;card&quot;
    }
   ]
  },
</code></pre>
 
<h2>User Records, deleteAll Tag Cleared, No User Records to Update</h2>
<p>The following JSON data structure excerpt represents how the user record
data structure might look if an updated database is sent that contains no
updates to the user records. Note the delete, update and add records are
empty ( [] ), which signifies that there are no records to delete, add, or
update.</p>
<pre><code>{
 &quot;db&quot;: {
  &quot;usrRcrd&quot;: {
   &quot;deleteAll&quot;: 0,
   &quot;delete&quot;: [],
   &quot;update&quot;: [],
   &quot;add&quot;: []
 },
</code></pre>
 
<h2>Holiday Record</h2>
<p>The following JSON data structure represents how the data structure might
look if the holiday records were being sent to the device.</p>
<pre><code>{
  “db”:{
    &quot;holidays&quot;: [
    {
     &quot;strtDtTm&quot;: &quot;20141223000000&quot;,
     &quot;endDtTm&quot;: &quot;20141227000000&quot;,
     &quot;action&quot;: &quot;pass&quot;
    },
    {
     &quot;strtDtTm&quot;: &quot;20140703000000&quot;,
     &quot;endDtTm&quot;: &quot;20140705000000&quot;,
     &quot;action&quot;: &quot;rstrctSec&quot;
    }
  ],
 }
}
</code></pre>
 
<h2>Credential Schedule Record</h2>
<p>The following JSON data structure represents how the data structure might
look if the credential schedule records were being sent to the device.</p>
<pre><code>{
  “db”: {
   &quot;schedules&quot;: [
   {
    &quot;days&quot;: [&quot;Su&quot;,&quot;Mo&quot;,&quot;Tu&quot;,&quot;We&quot;,&quot;Th&quot;,”Fr&quot;,&quot;Sa&quot;],
    &quot;strtHr&quot;: 0,
    &quot;strtMn&quot;: 0,
    &quot;lngth&quot;: 1439
   },
   {
    &quot;days&quot;: [&quot;Mo&quot;,&quot;Tu&quot;,&quot;We&quot;,&quot;Th&quot;,&quot;Fr&quot;],
    &quot;strtHr&quot;: 8,
    &quot;strtMn&quot;: 0,
    &quot;lngth&quot;: 540
   },
   {
    &quot;days&quot;: [&quot;Mo&quot;,&quot;We&quot;,&quot;Fr&quot;],
    &quot;strtHr&quot;: 8,
    &quot;strtMn&quot;: 0,
    &quot;lngth&quot;: 240
   }
  ],
 }
}
</code></pre>
 
<h2>Auto Unlock Record</h2>
<p>The following JSON data structure represents how the data structure might
look if the auto event records were being sent to the device.</p>
<pre><code>{
  “db”: {
   &quot;autoUnlock&quot;: [
    {
     &quot;action&quot;: &quot;pass&quot;,
     &quot;strtHr&quot;: 8,
     &quot;strtMn&quot;: 0,
     &quot;days&quot;: [&quot;Mo&quot;,&quot;Tu&quot;,&quot;We&quot;, &quot;Th&quot;,&quot;Fr&quot; ]
    },
    {
     &quot;action&quot;: &quot;sec&quot;,
     &quot;strtHr&quot;: 17,
     &quot;strtMn&quot;: 0,
     &quot;days&quot;: [&quot;Mo&quot;,&quot;Tu&quot;,&quot;We&quot;,&quot;Th&quot;,&quot;Fr&quot; ]
    }
   ]
 }
}
</code></pre>
 
<h2>Configuration Record</h2>
<p>The following JSON data structure represents how the data structure might
look if the configuration records were being sent to the device.</p>
<pre><code> {
 &quot;config&quot;:{
   &quot;battFail&quot;:&quot;sec&quot;,
   &quot;proxConfGE4001&quot;:&quot;T&quot;,
   &quot;rtcTime&quot;:&quot;20140424152753&quot;,
   &quot;iClsUID40b&quot;:&quot;T&quot;,
   &quot;bprEn&quot;:&quot;T&quot;,
   &quot;proxConfHID&quot;:&quot;T&quot;,
   &quot;uid15693&quot;:&quot;T&quot;,
   &quot;name&quot;:&quot;sw555&quot;,
   &quot;mi14443&quot;:&quot;T&quot;,
   &quot;uid14443&quot;:&quot;F&quot;,
   &quot;proxConfGECASI&quot;:&quot;T&quot;,
   &quot;dstStart&quot;:&quot;12b0&quot;,
   &quot;ada&quot;:&quot;30&quot;,
   &quot;proxConfAWID&quot;:&quot;T&quot;,
   &quot;proxConfGE4002&quot;:&quot;F&quot;,
   &quot;doorProp&quot;:&quot;20&quot;,
   &quot;relock&quot;:&quot;3&quot;,
   &quot;noc14443&quot;:&quot;T&quot;,
   &quot;dstEnd&quot;:&quot;2230&quot;,
   &quot;firstManIn&quot;:&quot;false&quot;,
   &quot;dstEnable&quot;:&quot;false&quot;,
   &quot;fwUrl&quot;:&quot;&quot;
   },
&quot;apCfgNew&quot;:
   {
    &quot;apCfgNewEn&quot;:&quot;T&quot;,
    &quot;ssidNew&quot;:&quot;02.04.12&quot;,
    &quot;psswdNew&quot;:&quot; G10N\@113&quot;,
    &quot;usrNmNew&quot;:&quot;Cr649&quot;,
    &quot;wifiSecNew&quot;:&quot;entrprs&quot;,
    &quot;apCfgNewStrtTm&quot;:&quot;20140527141029&quot;
   },
   &quot;rsiConfigs&quot;:{
   &quot;rsiHrtbtTm&quot;:1234,
   &quot;rsiRtryTm&quot;:4,&quot;rsiSubqtDly&quot;:13,
   &quot;rsiFrstDly&quot;:14,&quot;autoPrg&quot;:&quot;T&quot;,
   &quot;rsiCommFailSfMd&quot;:&quot;disbld&quot;,
   &quot;relockMethod&quot;:&quot;tmr&quot;
   }
  }
</code></pre>
 
<h2>Partial User Database Update</h2>
<p>Putting all the records together, the following might represent the JSON
data structure for a sample database that could be sent to update an
existing device database.</p>
<pre><code>{
 &quot;db&quot;: {
  &quot;usrRcrd&quot;: {
   &quot;deleteAll&quot;: 0,
   &quot;delete&quot;: [],
   &quot;update&quot;: [],
   &quot;add&quot;: [
   {
    &quot;usrID&quot;: &quot;64&quot;,
    &quot;adaEn&quot;: 0,
    &quot;actDtTm&quot;: &quot;20140101000000&quot;,
    &quot;expDtTm&quot;: &quot;20200101000000&quot;,
    &quot;fnctn&quot;: &quot;norm&quot;,
    &quot;crSch&quot;: [1,3],
    &quot;primeCr&quot;: &quot;01020304050607080910111213141516&quot;,
    &quot;prCrTyp&quot;: &quot;card&quot;
   },
   {
    &quot;usrID&quot;: &quot;146&quot;,
    &quot;adaEn&quot;: 1,
    &quot;actDtTm&quot;: &quot;20100101000000&quot;,
    &quot;expDtTm&quot;: &quot;20200101000000&quot;,
    &quot;fnctn&quot;: &quot;norm&quot;,
    &quot;crSch&quot;: [1,3],
    &quot;primeCr&quot;: &quot;16151413121110090807060504030201&quot;,
    &quot;prCrTyp&quot;: &quot;card&quot;
   },
   {
    &quot;usrID&quot;: &quot;149&quot;,
    &quot;adaEn&quot;: 1,
    &quot;actDtTm&quot;: &quot;20100101000000&quot;,
    &quot;expDtTm&quot;: &quot;20200101000000&quot;,
    &quot;fnctn&quot;: &quot;toggle&quot;,
    &quot;crSch&quot;: [1],
    &quot;primeCr&quot;: &quot;02030405060708091011121314151617&quot;,
    &quot;prCrTyp&quot;: &quot;card&quot;
   },
   {
    &quot;usrID&quot;: &quot;148&quot;,
    &quot;adaEn&quot;: 0,
    &quot;actDtTm&quot;: &quot;20100101000000&quot;,
    &quot;expDtTm&quot;: &quot;20200101000000&quot;,
    &quot;fnctn&quot;: &quot;norm&quot;,
    &quot;crSch&quot;: [1],
    &quot;primeCr&quot;: &quot;14161514131211100908070605040302&quot;,
    &quot;prCrTyp&quot;: &quot;card&quot;
   }
  ]
 },
  &quot;schedules&quot;: [
   {
    &quot;days&quot;: [ &quot;Su&quot;, &quot;Mo&quot;,&quot;Tu&quot;,&quot;We&quot;,&quot;Th&quot;,&quot;Fr&quot;,&quot;Sa&quot;],
    &quot;strtHr&quot;: 0,
    &quot;strtMn&quot;: 0,
    &quot;lngth&quot;: 1439
   },
   {
    &quot;days&quot;: [
    &quot;Mo&quot;,
    &quot;Tu&quot;,
    &quot;We&quot;,
    &quot;Th&quot;,
    &quot;Fr&quot;
   ],
    &quot;strtHr&quot;: 8,
    &quot;strtMn&quot;: 0,
    &quot;lngth&quot;: 540
   },
   {
    &quot;days&quot;: [
    &quot;Mo&quot;,
    &quot;We&quot;,
    &quot;Fr&quot;
   ],
    &quot;strtHr&quot;: 8,
    &quot;strtMn&quot;: 0,
    &quot;lngth&quot;: 240
   }
  ],
  &quot;holidays&quot;: [
   {
    &quot;strtDtTm&quot;: &quot;20141223000000&quot;,
    &quot;endDtTm&quot;: &quot;20141227000000&quot;,
    &quot;action&quot;: &quot;pass&quot;
   },
   {
    &quot;strtDtTm&quot;: &quot;20140703000000&quot;,
    &quot;endDtTm&quot;: &quot;20140705000000&quot;,
    &quot;action&quot;: &quot;rstrctSec&quot;
   }
  ],
  &quot;autoUnlock&quot;: [
   {
    &quot;action&quot;: &quot;pass&quot;,
    &quot;strtHr&quot;: 8,
    &quot;strtMn&quot;: 0,
    &quot;days&quot;: [&quot;Mo&quot;,&quot;Tu&quot;,&quot;We&quot;,&quot;Th&quot;,&quot;Fr&quot;]
   },
   {
    &quot;action&quot;: &quot;sec&quot;,
    &quot;strtHr&quot;: 8,
    &quot;strtMn&quot;: 0,
    &quot;days&quot;: [&quot;Mo&quot;,&quot;Tu&quot;,&quot;We&quot;,&quot;Th&quot;,&quot;Fr&quot;]
   }
  ]
 },
 &quot;config&quot;: {
  &quot;relock&quot;: 3,
  &quot;doorProp&quot;: 20,
  &quot;ada&quot;: 30,
  &quot;firstManIn&quot;: 0,
  &quot;dstEnable&quot;: 0,
  &quot;dstStart&quot;: &quot;3022&quot;,
  &quot;dstEnd&quot;: &quot;B012&quot;,
  &quot;battFail&quot;: &quot;asIs&quot;,
  &quot;bprEn&quot;: &quot;T&quot;,
  &quot;rtcTime&quot;: &quot;20140701170122&quot;
 },
 &quot;dbDwnLdTm&quot;: &quot;20140702210122&quot;,
 &quot;nxtDbVerTS&quot;: &quot;0x08d16386bfaec212&quot;
}
</code></pre>
 
<h2>Delete Holiday and Auto Event Records</h2>
<p>There may be instances when holidays or auto unlock records need to be
deleted from the device. The host must be able to provide a JSON data
structure that permits this operation.</p>
<p>The following JSON structure represents how holiday and auto unlock records
would be erased from the device during a database update.</p>
<pre><code>{
 “db”:{
  &quot;holidays&quot;: [],
  &quot;autoUnlock&quot;: []
 }
}
</code></pre>
 
<h2>WiFi Commissioning</h2>
<p>The following structure represents a JSON data structure that contains WiFi
commissioning data.</p>
<pre><code>{
  &quot;wifiCmsh&quot;:
   {
     &quot;hstCnfg&quot;:
     {
       &quot;ipDNS&quot;:&quot;orcaintegration.cloudapp.net&quot;,
       &quot;altDNS&quot;:&quot;orcabackup.cloudapp.net&quot;,
       &quot;scrCnn&quot;:&quot;https&quot;,
       &quot;dscvryTyp&quot;:&quot;ipAddr&quot;
     },
     &quot;apCnfg&quot;:
     {
       &quot;ssid&quot;:&quot;test&quot;,
       &quot;psswd&quot;:&quot;password123&quot;,
       &quot;usrNm&quot;:&quot;default&quot;,
       &quot;wifiSec&quot;:&quot;prsnl&quot;
     }
   }
}
</code></pre>
 
<h2>Audit Trail</h2>
<p>The following structure represents a JSON data structure for an audit trail
block that contains 3 audits. Note that this data structure does not contain
a parent tag. This is because audit trails are being requested by the host,
therefore the data type is not needed.</p>
<pre><code>{“audits”:[
       {
         &quot;event&quot;:&quot;1122334455&quot;,
         &quot;time&quot;:20131113091752
       },
       {
         &quot;event&quot;:&quot;008A0000&quot;,
         &quot;time&quot;:20131113092022
       },
       {
         &quot;event&quot;:&quot;00860000&quot;,
         &quot;time&quot;:20131113092513
       }
],
“nxtDbVerTS”:”0x0873828198485981”}
</code></pre>
 
<h2>Asynchronous Events</h2>
<p>The following structure represents a JSON data structure that contains an asynchronous event.</p>
<pre><code>{
   “asyncEvent&quot;:
   {
       &quot;event&quot;:&quot;00830000&quot;,
       &quot;time&quot;:20131113091752
   }
}
</code></pre>
 
<h2>Device Settings</h2>
<p>This section gives an example of how the data will be structured by the
device when a request is made for the device parameters. These parameters
are broken down into 5 different components so that redundant tags can be used.</p>
<h3>Device parameters</h3>
<p>When a mobile device connects to a device, the device will report a set of
parameters to the mobile device. This is an example of the data structure
that would be returned by the device.</p>
<pre><code>{
   &quot;dvcProfile&quot;:
   {
           &quot;baseType&quot;:&quot;nde&quot;,
           &quot;key&quot;:&quot;NewAPCfg&quot;,
           &quot;value&quot;:&quot;1&quot;
   },
   &quot;battV&quot;:
   {
           &quot;main&quot;:&quot;5.87&quot;,
           &quot;li&quot;:&quot;2.99&quot;
   },
   &quot;fwVer&quot;:
   {
           &quot;main&quot;:&quot;01.03.11&quot;,
           &quot;credRdr&quot;:&quot;01.02.10&quot;,
           &quot;ble&quot;:&quot;01.02.10&quot;,
           &quot;wifi&quot;:&quot;01.05.10&quot;,
           &quot;mainBl&quot;:&quot;00.01.03&quot;,
           &quot;credRdrBl&quot;:&quot;00.01.01&quot;
   },
   &quot;wifiStngs&quot;:
   {
           &quot;ssid&quot;:&quot;01.03.11&quot;,
           &quot;psswd&quot;:&quot;\@113G10N&quot;,
           &quot;usrNm&quot;:&quot;Br549&quot;,
           &quot;wifiSec&quot;:&quot;entrprs&quot;,
           &quot;encrypt&quot;:&quot;wep&quot;,
           &quot;kyIndx&quot;:4,
           &quot;dscvryTyp&quot;:&quot;ipAddr&quot;,
           &quot;scrCnn&quot;: &quot;http&quot;,
           &quot;ip&quot;:&quot;196.23.43.113&quot;,
           &quot;dns&quot;:&quot;firstChoice&quot;,
           &quot;altDNS&quot;:&quot;secondChoice&quot;
   },
   &quot;apCfgNew&quot;:
   {
           &quot;apCfgNewEn&quot;:&quot;T&quot;,
           &quot;ssidNew&quot;:&quot;02.04.12&quot;,
           &quot;psswdNew&quot;:&quot; G10N\@113&quot;,
           &quot;usrNmNew&quot;:&quot;Cr649&quot;,
           &quot;wifiSecNew&quot;:&quot;entrprs&quot;,
           &quot;apCfgNewStrtTm&quot;:&quot;20140527160629&quot;
   },
   &quot;lckPrmtrs&quot;:
   {
           &quot;nm&quot;:&quot;corner office&quot;,
           &quot;mdl&quot;: &quot;nde&quot;,
           &quot;lckSn&quot;:&quot;1122334455&quot;,
           &quot;mnSn&quot;:&quot;2233445566&quot;,
           &quot;mfgDt&quot;:&quot;20140607&quot;,
           &quot;daysInUse&quot;:145,
           &quot;hwVer&quot;:&quot;c1&quot;,
           &quot;type&quot;:&quot;strm&quot;,
           &quot;relock&quot;:1,
           &quot;doorProp&quot;:20,
           &quot;ada&quot;:30,
           &quot;firstManIn&quot;:0,
           &quot;dstEnable&quot;:0,
           &quot;dstStart&quot;: &quot;3022&quot;,
           &quot;dstEnd&quot;: &quot;B012&quot;,
           &quot;battFail&quot;: &quot;sec&quot;,
           &quot;rtcTime&quot;: &quot;20140527140629&quot;,
           &quot;dbDwnLdTm&quot;:&quot;20140528020000&quot;
   },
   &quot;rdrPrmtrs&quot;:
   {
           &quot;bprEn&quot;: &quot;T&quot;,
           &quot;sn&quot;:&quot;4455667788&quot;,
           &quot;mfgDt&quot;:&quot;20140607&quot;,
           &quot;daysInUse&quot;:145,
           &quot;hwVer&quot;:&quot;c1&quot;
   }
}
</code></pre>
 
<h3>Real-Time Service Parameters</h3>
<p><strong>THIS SECTION DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND SHOULD BE 
REMOVED FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS. #REMOVE_BEFORE_PUBLISHING</strong></p>
<pre><code>{
  &quot;realTimeSubscription&quot;:
  {
    &quot;subscriptionCapabilities&quot;:
    {
      &quot;deviceAudits&quot;:
      {
        &quot;tag&quot;:&quot;0x90&quot;
      }
      &quot;rexActive&quot;:
      {
        &quot;tag&quot;:&quot;0x91&quot;,
        &quot;values&quot;:
        {
          &quot;F&quot;:0,
          &quot;T&quot;:1
        }
      },
      &quot;fdrActive&quot;:
      {
        &quot;tag&quot;:&quot;0x92&quot;,
        &quot;values&quot;:
        {
          &quot;F&quot;:0,
          &quot;T&quot;:1
        }
      },
      &quot;tamperOpen&quot;:
      {
        &quot;tag&quot;:&quot;0x93&quot;,
        &quot;values&quot;:
        {
          &quot;F&quot;:0,
          &quot;T&quot;:1
        }
      },
      &quot;magTamperDetected&quot;:
      {
        &quot;tag&quot;:&quot;0x94&quot;,
        &quot;values&quot;:
        {
          &quot;F&quot;:0,
          &quot;T&quot;:1
          }
        },
        &quot;rtccStatus&quot;:
      {
        &quot;tag&quot;:&quot;0x95&quot;,
        &quot;values&quot;:
        {
          &quot;invalid&quot;:0,
          &quot;valid&quot;:1
        }
      },
      &quot;lockPosition&quot;:
      {
        &quot;tag&quot;:&quot;0x96&quot;,
        &quot;values&quot;:
        {
          &quot;unlocked&quot;:0,
          &quot;locked&quot;:1
        }
      },
      &quot;lockState&quot;:
      {
        &quot;tag&quot;:&quot;0x97&quot;,
        &quot;values&quot;:
        {
          &quot;frozenPassage&quot;:0,
          &quot;frozenSecure&quot;:1,
          &quot;holidayRestricted&quot;:2,
          &quot;momentaryUnlock&quot;:3,
          &quot;passage&quot;:4,
          &quot;secured&quot;:5
        }
      },
      &quot;primaryBatteryStatus&quot;:
      {
        &quot;tag&quot;:&quot;0x98&quot;,
        &quot;values&quot;:
        {
          &quot;normal&quot;:0,
          &quot;low&quot;:1,
          &quot;critical&quot;:2,
        }
      },
      &quot;doorOpen&quot;:
      {
        &quot;tag&quot;:&quot;0x99&quot;,
        &quot;values&quot;:
        {
          &quot;closed&quot;:0,
          &quot;open&quot;:1
        }
      }
    }
  }
}
</code></pre>
 
<h4>Real-Time Service Subscription</h4>
<p><strong>THIS SECTION DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND SHOULD BE 
REMOVED FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS. #REMOVE_BEFORE_PUBLISHING</strong></p>
<p>The following JSON structure describes how a Gateway can subscribe to every tag used in 
the 410-IP RTAC service.</p>
<pre><code>{
  &quot;realTimeSubscription&quot;:
  {
    &quot;subscriptionList&quot;:
    {
      &quot;deviceAudits&quot;:&quot;T&quot;,
      &quot;rexActive&quot;:&quot;T&quot;,
      &quot;fdrActive&quot;:&quot;T&quot;,
      &quot;tamperOpen&quot;:&quot;T&quot;,
      &quot;magTamperDetected&quot;:&quot;T&quot;,
      &quot;rtccStatus&quot;:&quot;T&quot;,
      &quot;lockPosition&quot;:&quot;T&quot;,
      &quot;lockState&quot;:&quot;T&quot;,
      &quot;primaryBatteryStatus&quot;:&quot;T&quot;,
      &quot;doorOpen&quot;:&quot;T&quot;,
      &quot;incAudID&quot;:&quot;T&quot;
    }
  }
}
</code></pre>
 
<h2>Server Command</h2>
<p><strong>THIS SECTION DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND CERTAIN ALLIANCE
PARTNERS AND SHOULD BE REMOVED FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS.</strong></p>
<p>The following JSON data structure represents how the data structure might look if the Server 
command were being sent to the lock. See relevant server command document.</p>
<pre><code>{
 &quot;svrCmds&quot;:[
   &quot;7f52206210507b4ad46c1e7abb840d0c&quot;,
   &quot;f1dbf8b6d0fe767e2d88b68ed50dd183&quot;
 ]
}
</code></pre>
 
<h1>Gateway JSON Data Structures and IP API</h1>
<p>The following section defines JSON structures that are used in communication with the ENGAGE Gateway.</p>
<p>None of the following JSON structures should be used to directly communicate with an ENGAGE lock.</p>
<h2>Edge Device JSON Data Structures</h2>
<h3>Linked Device Management</h3>
<p><strong>THIS SECTION DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND SHOULD BE 
REMOVED FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS. #REMOVE_BEFORE_PUBLISHING</strong></p>
<p>Link management JSON tags are used to command gateway to link to an edge device.
The primary intent is between gateway and mobile application</p>
<p><strong>Table 15: Link Device Management</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Access Control Device Data</strong></td>
<td><strong>linkManagement</strong></td>
<td><strong>Object (parent)</strong></td>
<td></td>
</tr>
<tr>
<td>Create link with specified device identifier</td>
<td>createLink</td>
<td>String/32</td>
<td>linkId value <em>RSI mode - linkId is numeric ONLY and limited to 0 to 254, excluding 170</em></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><em>IP Mode – this is null when sent from the MAPP</em></td>
</tr>
<tr>
<td>Device Name Target device name</td>
<td>deviceName</td>
<td>String/32</td>
<td>Max 32 characters <em>RSI mode – this is null for RSI</em></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><em>IP Mode – this is the desired edge device to link to</em></td>
</tr>
<tr>
<td>Delete or abort link request with specified device identifier</td>
<td>deleteLink</td>
<td>String/32</td>
<td>linkId</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><em>Note: For RSI mode linkId is numeric ONLY and limited to 0 to 254, excluding 170</em></td>
</tr>
</tbody>
</table>
<h3>Gateway Edge Device Link List</h3>
<p>The gateway link list is an array object which contains an array entry for each of the gateway’s linked device.</p>
<p><strong>Table 16: Gateway Edge Device Link List</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
<th><strong>Device Exclusions</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Access Point Link List</strong></td>
<td><strong>linkList</strong></td>
<td><strong>Array</strong> (parent)</td>
<td><strong>Each entry contains child JSON structures</strong></td>
<td></td>
</tr>
<tr>
<td>Unique Identifier that a host/mapp uses to reference a lock (or other device linked to Gateway)</td>
<td>linkId</td>
<td>String/32</td>
<td>Host system device identifier value – alpha-numeric 32 characters</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><em>Note: For RSI mode linkId is numeric ONLY and limited to 0 to 254, excluding 170</em></td>
<td></td>
</tr>
<tr>
<td>Status of communication between gateway and device</td>
<td>linkCommStatus</td>
<td>String/16</td>
<td>“disconnected”, “connected”, “advertising” (reservedfor future use)</td>
<td></td>
</tr>
<tr>
<td>Device Name</td>
<td>deviceName</td>
<td>String/32</td>
<td>Max 32 characters</td>
<td></td>
</tr>
<tr>
<td>Model Type of Linked Device (self-reported by the linked device)</td>
<td>modelType</td>
<td>String/32</td>
<td>“nde”, “control”, etc</td>
<td></td>
</tr>
<tr>
<td>Device Id</td>
<td>deviceId</td>
<td>String/32</td>
<td>Lower 8 bytes of edge device serial number: &quot;A0B1000000000005&quot;</td>
<td></td>
</tr>
<tr>
<td>Edge Device BLE MAC address</td>
<td>macAddr</td>
<td>String/32</td>
<td>MAC address of edge device: &quot;00:07:80:78:5B:EF&quot;</td>
<td></td>
</tr>
<tr>
<td>MAC Type</td>
<td>macType</td>
<td>String/16</td>
<td>“public”, “random”</td>
<td></td>
</tr>
<tr>
<td>Battery Voltage</td>
<td>battV</td>
<td>String</td>
<td>JSON object “battV” defined in Retrievable Lock parameters</td>
<td>CTE</td>
</tr>
<tr>
<td>Line Voltage</td>
<td>lineV</td>
<td>String</td>
<td>JSON object “lineV” defined in Retrievable Lock parameters</td>
<td>R,N,L,SC</td>
</tr>
<tr>
<td>Signal Quality</td>
<td>signalQuality</td>
<td>String/8</td>
<td>“Low”, “Med”, “High”, ”Unknown”</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Example: Linked Device Data</strong></p>
<pre><code>{
 &quot;linkList&quot;: [
   {
     &quot;linkId&quot;: &quot;dev00000&quot;,
     &quot;linkCommStatus&quot;: &quot;connected&quot;,
     &quot;deviceName&quot;: &quot;Front Door&quot;,
     &quot;modelType&quot;: &quot;nde&quot;,
     &quot;deviceId&quot;: &quot;a000000000000123&quot;,
     &quot;macAddr&quot;: &quot;00:07:80:78:2F:88&quot;,
     &quot;macType&quot;: &quot;public&quot;,
     &quot;battV&quot;: {
      &quot;main&quot;: &quot; 5.52&quot;,
      &quot;li&quot;: &quot;0&quot;
     }
    }
  ]
}
</code></pre>
 
<h3>Linking Edge Devices</h3>
<p>When linking an Edge Device to a specific Gateway, the gateway will respond
with the parent tag linkInfo which is defined as follows.</p>
<p><strong>Table 17: Linking Edge Devices</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Access Point Linked Device Info</strong></td>
<td><strong>linkInfo</strong></td>
<td><strong>Object</strong></td>
<td></td>
</tr>
<tr>
<td>Unique Identifier that a host/mapp uses to reference a lock (or other device linked to Gateway)</td>
<td>linkId</td>
<td>String/32</td>
<td>Host system device identifier value – alpha-numeric 32 characters</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><em>Note: For RSI mode linkId is numeric ONLY and limited to 0 to 254, excluding 170</em></td>
</tr>
<tr>
<td>Device Id</td>
<td>deviceId</td>
<td>String/32</td>
<td>Lower 8 bytes of edge device serial number: &quot;A0B1000000000005&quot;</td>
</tr>
<tr>
<td>Device Name</td>
<td>deviceName</td>
<td>String/32</td>
<td>Max 32 characters</td>
</tr>
<tr>
<td>Status of communication between gateway and device</td>
<td>linkCommStatus</td>
<td>String/16</td>
<td>“disconnected”, “connected”, “advertising” (reservedfor future use)</td>
</tr>
<tr>
<td>Model Type</td>
<td>modelType</td>
<td>String/16</td>
<td>”nde”, “control”, “le”, etc.</td>
</tr>
</tbody>
</table>
<p><strong>Example: JSON body response from POST /edgeDevices</strong></p>
<pre><code>{
 &quot;linkInfo&quot;: {
   &quot;linkId&quot;: &quot;dev00000&quot;,
   &quot;deviceId&quot;: &quot;a000000000000123&quot;,
   &quot;deviceName&quot;: &quot;Front Door&quot;,
   &quot;linkCommStatus&quot;: &quot;connected&quot;,
   &quot;modelType&quot;: &quot;nde&quot;
  }
}
</code></pre>
 
<h3>Linked Edge Device Data</h3>
<p>To configure and control an online edge device that is linked to an ENGAGE Gateway, 
the host may need to know the current device parameters. This data structure builds 
on device parameters that are provided in the <strong>Device JSON Messages Section</strong>, and the 
real-time access control structures that follow in the <strong>Gateway JSON Data Structures Section</strong>.
To configure and control an online edge device that is linked to an ENGAGE Gateway, the Gateway 
provides the following edge device information:</p>
<p><strong>Table 18: Linked Edge Device Data</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Access Control Device Data</strong></td>
<td><strong>edgeDevice</strong></td>
<td><strong>Array</strong> (parent) of device data objects with linkId</td>
<td></td>
</tr>
<tr>
<td>Unique Identifier that a host/mapp uses to reference a lock (or other device linked to Gateway)</td>
<td>linkId</td>
<td>String/32</td>
<td>Host system device identifier value – alpha-numeric 32 characters</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><strong>NOTE:</strong> <em>For RSI mode linkId is numeric ONLY and limited to 0 to 254, excluding 170</em></td>
</tr>
<tr>
<td><strong>JSON data structures, (Insert device JSON blocks such as database, configs, settings, audits, or state change</strong></td>
<td><strong>“db”, ”config”, “battV”, “fwVer,” “lockPrmtrs”, “rdrPrmtrs”, “rsiPrmtrs” “audits”, “asyncEvent”, “lockControl”, “lockStatus”</strong></td>
<td><strong>Parent object corresponding to device JSON structure.</strong></td>
<td>See the <strong>Device JSON Messages</strong> Section for definitions of JSON tags. <strong>NOTE:</strong> lockControl and lockStatus are defined in the next section.</td>
</tr>
</tbody>
</table>
<p><strong>NOTE:</strong> For ENGAGE 6.1 and later devices, devices configured for IP or stand-alone 
communication may not transmit their RSI parameters (rsiPrmtrs) or any children tags 
under the RSI parameters as they are not relevant to IP or stand-alone operation. 
The device will accept any changes to the RSI parameters if they are provided to the 
device, however the device will not provide the updated information back to the host.</p>
<h3>Device Control</h3>
<p>These device JSON structures are only accessible via the Gateway. <strong>These data structures 
cannot be written directly to a device.</strong></p>
<p><strong>NOTE:</strong> lockLEDFlash and lockState are independent. The client issuing the command can 
send only lockState, only lockLEDFlash or both. If the lock state and lock are combined 
the lock will first flash default.</p>
<p><strong>Table 19: Device Control</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>JSON Short Tag</strong></th>
<th><strong>Type/Max-Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Valid Values</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Device Control</strong></td>
<td><strong>lockControl</strong></td>
<td><strong>Object (parent = lockData)</strong></td>
<td></td>
</tr>
<tr>
<td><strong>Change Lock State (decision at door only)</strong></td>
<td><strong>lockState</strong></td>
<td><strong>Object (parent = lockControl)</strong></td>
<td></td>
</tr>
<tr>
<td>Next Lock State</td>
<td>nextLockState</td>
<td>String/15</td>
<td>”secure”, ”passage”, ”momentaryUnlock”, (not on RMRU) ”frozenSecure”, ”frozenPassage”, “auxSecure”, “auxPassage”, “auxMomntUnlck”, “mainAuxMomUnlck”, “mainAuxPassage”, “mainAuxSecure”</td>
</tr>
<tr>
<td>Momentary Unlock</td>
<td>momUnlckTm</td>
<td>Unsigned Int/3</td>
<td>0 - 255</td>
</tr>
<tr>
<td><strong>User Interface</strong></td>
<td><strong>lockLedFlash</strong></td>
<td><strong>Object (parent = lockControl)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>LED Control Enable</td>
<td>ledName</td>
<td>String/16</td>
<td>”reader”, ( Primary LED on RMRU) ”insidePushButton” (not on RMRU)</td>
</tr>
<tr>
<td><strong>LED Pattern Parameters</strong></td>
<td><strong>pattPrmtrs</strong></td>
<td><strong>Object (parent = lockLedFlash)</strong></td>
<td></td>
</tr>
<tr>
<td>LED Blink Colors</td>
<td>ledColors</td>
<td>String/12</td>
<td>“green”, ”red”, ”greenThenRed”, ”redThenGreen”</td>
</tr>
<tr>
<td>LED On Interval</td>
<td>onTime</td>
<td>String / 6</td>
<td>“100”, “500”, “1000”, “always”</td>
</tr>
<tr>
<td>LED Off Interval</td>
<td>offTime</td>
<td>String / 6</td>
<td>“100”, “500”, “1000”, “always”</td>
</tr>
<tr>
<td><strong>LED Repeat Parameters</strong></td>
<td><strong>repeatPrmts</strong></td>
<td><strong>Object (parent = lockLedFlash)</strong></td>
<td></td>
</tr>
<tr>
<td>Pattern Repeat</td>
<td>repeatPatt</td>
<td>String/20</td>
<td>“stop”, “once”, ”indefiniteIncDelay”, ”indefiniteConstDelay”</td>
</tr>
<tr>
<td>Number Times to Repeat Pattern</td>
<td>repeatNum</td>
<td>Unsigned Int/1</td>
<td>1,2,3, or 4</td>
</tr>
<tr>
<td>LED Interval Time</td>
<td>repeatInterval</td>
<td>Unsigned Int/2</td>
<td>0,20,40,60</td>
</tr>
</tbody>
</table>
<h3>Device Status</h3>
<p>The Device Status JSON structures are used only to represent a device status from a Gateway
to an IP host. This JSON cannot be queried directly from a device.</p>
<p>Individual device status varies based on the device model type. The JSON structures shown 
in Table 20 are a master list of possible status tags, but are dependent on the hardware 
of the device.</p>
<p><strong>Table 20: Device Status JSON Tags</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Device Status</strong></td>
<td><strong>lockStatus</strong></td>
<td><strong>Object (parent = lockData)</strong></td>
<td></td>
</tr>
<tr>
<td>Device State</td>
<td>currentLockState</td>
<td>String/9</td>
<td>”sec”, ”pass”, ”momUnlck”, “holRstrct”, ”frznSec”, ”frznPass”, “frznDne”, “dne”, “dvcFault””prvcySecd” <strong>NOTE:</strong> <em>State is set for privacy secure or deadbolt secure.</em></td>
</tr>
<tr>
<td><strong>Sensor Status</strong></td>
<td><strong>sensorStatus</strong></td>
<td><strong>Object (parent = lockStatus)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Lock Status</td>
<td>locked</td>
<td>String/1</td>
<td>“T”,”F”</td>
</tr>
<tr>
<td>Aux Status</td>
<td>auxPosition</td>
<td>String/1</td>
<td>“T”,”F”</td>
</tr>
<tr>
<td>Alarm Status</td>
<td>alarmPosition</td>
<td>String/1</td>
<td>“T”,”F”</td>
</tr>
<tr>
<td>Lock Clutch Position (AD and RMRU Only)</td>
<td>lockClutched</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Battery Critical</td>
<td>primaryBatteryStatus</td>
<td>String/12</td>
<td>“normal”,”low”, “critical”, “notInstalled”</td>
</tr>
<tr>
<td>Real Time Clock Backup Battery</td>
<td>rtcBatteryStatus</td>
<td>String/12</td>
<td>“normal”,”low”, “critical”, “notInstalled” Deprecated for ENGAGE 6.0 and later as no ENGAGE devices have an rtc battery (coin cell back up)</td>
</tr>
<tr>
<td>Door Position</td>
<td>doorOpen</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>IPB Active</td>
<td>ipbActive</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Request To Exit Active</td>
<td>rexActive</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Request to Enter Active</td>
<td>renActive</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Remote Release</td>
<td>relActive</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Deadbolt Position</td>
<td>deadBoltExtended</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Key Override Active</td>
<td>keyOverrideActive</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>FDR Button Active</td>
<td>fdrActive</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Tamper Lid Open</td>
<td>tamperOpen</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Magnetic Tamper Detected</td>
<td>magTamperDetected</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Reader Tamper Detected</td>
<td>rdrTamperDetected</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
<tr>
<td>Latchbolt Extended</td>
<td>latchBoltExtended</td>
<td>String/1</td>
<td>“T”, “F”</td>
</tr>
</tbody>
</table>
<h2>Gateway JSON Data Structures</h2>
<h3>Gateway Scan List</h3>
<p>The scan list object contains a report detailing ENGAGE devices that are within BLE wireless 
distance of the Gateway.</p>
<p><strong>Table 21: Gateway Scan List</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Scan for uncaptured or unlinked devices (no linked devices)</strong></td>
<td><strong>gatewayScanList</strong></td>
<td><strong>Array of objects (parent)</strong></td>
<td><strong>Each array entry is an object containing the following objects</strong></td>
</tr>
<tr>
<td>Main Serial Number</td>
<td>mainSn</td>
<td>String/16</td>
<td>Max 16 characters</td>
</tr>
<tr>
<td>Device Name</td>
<td>deviceName</td>
<td>String/32</td>
<td>“xxxx….….xxxx”</td>
</tr>
<tr>
<td>Signal Quality</td>
<td>signalQuality</td>
<td>String/8</td>
<td>“Low”, “Med”, “High”</td>
</tr>
<tr>
<td>Model Type</td>
<td>modelType</td>
<td>String/16</td>
<td>”nde”, “control”, “le”, etc.</td>
</tr>
</tbody>
</table>
<h3>Gateway Configuration</h3>
<p><strong>Table 22: Gateway Configuration</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Configuration Block</strong></td>
<td><strong>gatewayConfig</strong></td>
<td><strong>Object (top level parent)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td><strong>Gateway Config</strong></td>
<td><strong>genGatewayConfig</strong></td>
<td><strong>Object (parent = gatewayConfig)</strong></td>
<td></td>
</tr>
<tr>
<td>Gateway Name</td>
<td>deviceName</td>
<td>String/32</td>
<td>Max 32 characters</td>
</tr>
<tr>
<td>Host Connection Type</td>
<td>hostProtocol</td>
<td>String/9</td>
<td>“rs485Rsi”, “ipEngage” “ipClient”</td>
</tr>
<tr>
<td>Enable Shell Debug Port</td>
<td>sshEnable</td>
<td>String/1</td>
<td>“true”,”false”</td>
</tr>
<tr>
<td>Clock Time</td>
<td>rtcTime</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month ( 01 – 12 ), DD = Day ( 01 – 31 ), HH = Hour ( 00 – 23 ), MM = Minutes ( 00 – 59 ), SS = Seconds ( 00 – 59 ). Example: “20140710145030” means July 10, 2014, 2:50:30 pm.</td>
</tr>
<tr>
<td>Daylight Saving Time</td>
<td>dstEnable</td>
<td>String/5</td>
<td>&quot;false&quot;=DST not observed, &quot;true&quot;=DST observed</td>
</tr>
<tr>
<td>DST Start</td>
<td>dstStart</td>
<td>String/4</td>
<td>Hour that clocks are moved behind by 1 hour. 3=daylight month start, 0=daylight day of week start, 2=daylight week # start, 2=daylight hour start, US default is 3022.</td>
</tr>
<tr>
<td>DST End</td>
<td>dstEnd</td>
<td>String /4</td>
<td>Hour that clocks are moved ahead by 1 hr. B=standard month start (1=Jan,…), 0=standard day of week start, 0 = Sun, 1=standard week # start, (1=1st,..5=last), 2=standard hour start ,US default is B012</td>
</tr>
<tr>
<td>Firmware Address</td>
<td>fwUrl</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>Firmware Download TIme</td>
<td>fwDwnldTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140527040000”, May 27, 2014, 4:00:00 am, Value of “0” will result in immediate download.</td>
</tr>
<tr>
<td>Firmware Implement/Update Time</td>
<td>fwImplTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140603030000”, June 3, 2014, 3:00:00 am, Value of “0” will result in immediate update/implement.</td>
</tr>
<tr>
<td><strong>IP Mode Settings</strong></td>
<td><strong>gatewayIpModeConfig</strong></td>
<td><strong>Object (parent = gatewayConfig)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Interface ID</td>
<td>interfaceId</td>
<td>String/4</td>
<td>“eth0”, “wlan0”</td>
</tr>
<tr>
<td>Interface Enable</td>
<td>interfaceEnable</td>
<td>String/1</td>
<td>“T” = enables interface operation, “F” = disables interface operation</td>
</tr>
<tr>
<td>Gateway Discovery Method</td>
<td>discoveryMethod</td>
<td>String/6</td>
<td>“dhcp”, “staticIP”, “zeroConf”</td>
</tr>
<tr>
<td>Fixed IP Address, (only applies if discovery method is set to staticIP)</td>
<td>fixedIpAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>Default Gateway IP Address (only applies if discovery method is set to staticIP)</td>
<td>defGatewayIpAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>Netmask (only applies if discovery method is set to staticIP)</td>
<td>netmask</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>IP DNS Service (only applies if discovery method is set to staticIP)</td>
<td>ipDnsAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>Alternate IP DNS Service (only applies if discovery method is set to staticIP)</td>
<td>altDnsAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>IP Server URL (only applies if hostProtocol is ipClient)</td>
<td>ipServerURL</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>CA Server URL (only applies if hostProtocol is ipClient)</td>
<td>caServerURL</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>Keep Alive Time (only applies if hostProtocol is ipClient)</td>
<td>wsKeepAlive</td>
<td>String/4</td>
<td>“1” to “3600” seconds</td>
</tr>
<tr>
<td><strong>EdgeDevice FW Update related configs</strong></td>
<td><strong>edgeDeviceFwUrls</strong></td>
<td><strong>Array of Objects (parent = gatewayConfig)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Firmware Address</td>
<td>fwurl</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>Device Model Type</td>
<td>mdl</td>
<td>String/15</td>
<td>“nde”, “le”, “control”</td>
</tr>
<tr>
<td>Firmware Download Time</td>
<td>fwDwnldTm</td>
<td>String/14</td>
<td>YYYYMMDDHHMMSS – “20140527040000”, May 27, 2014, 4:00:00 am, Value of “0” will result in immediate download of the device’s firmware image to the Gateway.</td>
</tr>
<tr>
<td>Firmware Transfer Time</td>
<td>fwImplTm</td>
<td>String/14</td>
<td>YYYYMMDDHHMMSS – “20140603030000”, June 3, 2014, 3:00:00 am, Value of “0” will result in immediate start of transfer of the image to the device.</td>
</tr>
<tr>
<td>Firmware Version</td>
<td>fwVer</td>
<td>String/9</td>
<td>“xx.xx.xx” Example: “02.08.05”</td>
</tr>
</tbody>
</table>
<p><strong>THE REMAINDER OF THIS TABLE DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND SHOULD BE REMOVED FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS. #REMOVE_BEFORE_PUBLISHING</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length (ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Remote Access Point Config</strong></td>
<td><strong>apCnfg</strong></td>
<td><strong>Object (parent = gatewayConfig)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>SSID</td>
<td>ssid</td>
<td>String/32</td>
<td>Max 32 characters</td>
</tr>
<tr>
<td>AP Password</td>
<td>psswd</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>User Name</td>
<td>usrNm</td>
<td>String/16</td>
<td>Max 16 characters</td>
</tr>
<tr>
<td>WiFi Security</td>
<td>wifiSec</td>
<td>String/7</td>
<td>“prsnl”, “entrprs”, “open”,”wep”</td>
</tr>
<tr>
<td>Key Index</td>
<td>kyIndx</td>
<td>String/1</td>
<td>1,2,3,4</td>
</tr>
<tr>
<td><strong>RSI Settings</strong></td>
<td><strong>gatewayRsiModeConfig</strong></td>
<td><strong>Object (parent = gatewayConfig)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>RSD Address</td>
<td>rsdAddress</td>
<td>Unsigned Int/3</td>
<td>0 to 254, where 170 is not allowed</td>
</tr>
<tr>
<td>Low Door Address</td>
<td>lowDoor</td>
<td>Unsigned Int/3</td>
<td>0 to 254, where 170 is not allowed, must be less than high door setting; default of 0</td>
</tr>
<tr>
<td>High Door Address</td>
<td>highDoor</td>
<td>Unsigned Int/3</td>
<td>0 to 254, where 170 is not allowed must be greater than Low Door setting; default of 15</td>
</tr>
</tbody>
</table>
<h4>Edge Device Firmware Update via Gateway</h4>
<p>Gateway firmware version 01.49.12 and later supports updating linked edge
devices’ firmware for sites which are running 410-IP mode with the
edgeDeviceFwUrls JSON tag as defined above in Section 4.2.2. All linked
edge devices matching the Device Model Type tag will be updated to the requested
firmware. Please note that if the specified Firmware Version (fwVer) does not
match the actual version downloaded from the Firmware Address (fwurl), the edge
device will not be updated.</p>
<p>Status of the firmware update can be monitored through the resource GET
/gateway/deviceInfo. The children tags edgeDeviceFwUrls, status, and
extendedStatus contain all relevant information regarding the firmware update.</p>
<p>Gateway firmware versions 1.52.16 and later support firmware download of a
secure connection. In this case the host must provide the fwurl specified with
“https://” and the required port (ex. “https://10.200.136.198:444/gw_image.bin”)
If no port is specified in the request, it is assumed that the user intends to
use port 443.</p>
<p>When completing a firmware download from the host over HTTPS the gateway will
utilize the port specified (or 443) and complete the download via TLS, however
the gateway will not download or validate the certificate from the host.</p>
<p>The example below illustrates initiating a firmware update for all linked NDE
edge devices to take effect immediately.</p>
<p><strong>Example: application/json</strong></p>
<pre><code>{
   &quot;gatewayConfig&quot;: {
     &quot;edgeDeviceFwUrls&quot;: [
     {
     &quot;fwurl&quot;: &quot;http://192.168.43.24/nde_02.08.13_Releasepkg.02.08.13.bin&quot;,
     &quot;mdl&quot;: &quot;nde&quot;,
     &quot;fwDwnldTm&quot;: &quot;0&quot;,
     &quot;fwImplTm&quot;: &quot;0&quot;,
     &quot;fwVer&quot;: &quot;02.08.13&quot;
     }
     ]
   }
}
</code></pre>
 
<h3>Device Information Records (Gateway)</h3>
<p>ENGAGE devices will report all retrievable parameters in one large block, and
will include some parameters that may not directly apply to the device or its
mode of operation. For example, RSI protocol capable devices might report RSI
parameters when the device is not configured for RSI protocol operation.</p>
<p><strong>Table 23: Device Information Records (Gateway)</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Gateway Device Info</strong></td>
<td><strong>gatewayDeviceInfo</strong></td>
<td><strong>Object (top level parent)</strong></td>
<td></td>
</tr>
<tr>
<td><strong>Device</strong>  <strong>Profile</strong></td>
<td><strong>dvcProfile</strong></td>
<td><strong>Object (parent = gatewayDeviceInfo)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Base Type</td>
<td>baseType</td>
<td>String/3</td>
<td>“gwe”</td>
</tr>
<tr>
<td><strong>Extensions</strong></td>
<td><strong>ext</strong></td>
<td><strong>Array of objects (parent = dvcProfile)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Extension's name</td>
<td>Key</td>
<td>String/15</td>
<td>“gweSiteSurvey”</td>
</tr>
<tr>
<td>Extension's custom argument</td>
<td>Value</td>
<td>String/15</td>
<td>“1”</td>
</tr>
<tr>
<td><strong>Firmware Versions</strong></td>
<td><strong>fwVer</strong></td>
<td><strong>Object (parent = gatewayDeviceInfo)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Main</td>
<td>main</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
</tr>
<tr>
<td>Bluetooth Module Secondary</td>
<td>ble2</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
</tr>
<tr>
<td>Main Bootloader (uboot)</td>
<td>mainBl</td>
<td>String/8</td>
<td>“xx.xx.xx”</td>
</tr>
<tr>
<td>WiFi MAC Address</td>
<td>macAdr</td>
<td>String/17</td>
<td>“xx.xx.xx.xx.xx.xx”</td>
</tr>
<tr>
<td>Ethernet MAC Address</td>
<td>ethernetMacAdr</td>
<td>String/17</td>
<td>“xx.xx.xx.xx.xx.xx”</td>
</tr>
<tr>
<td><strong>WiFi Settings</strong></td>
<td><strong>wifiStngs</strong></td>
<td><strong>Object (parent = gatewayDeviceInfo)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>WiFi enable</td>
<td>wifiEnable</td>
<td>String/1</td>
<td>“T” = enables WiFi operation, “F” = disables WiFi operation</td>
</tr>
<tr>
<td>SSID</td>
<td>ssid</td>
<td>String/32</td>
<td>Max 32 characters</td>
</tr>
<tr>
<td>AP Password / Security Key</td>
<td>psswd</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>User Name</td>
<td>usrNm</td>
<td>String/16</td>
<td>Max 16 characters</td>
</tr>
<tr>
<td>WiFi Security</td>
<td>wifiSec</td>
<td>String/7</td>
<td>“prsnl”, “entrprs”, “open”, “wep”</td>
</tr>
<tr>
<td>Key Index</td>
<td>kyIndx</td>
<td>String/1</td>
<td>1,2,3,4</td>
</tr>
<tr>
<td><strong>Gateway Parameters</strong></td>
<td><strong>gatewayParameters</strong></td>
<td><strong>Object (parent = gatewayDeviceInfo)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Host Connection Type</td>
<td>hostProtocol</td>
<td>String/8</td>
<td>“rs485Rsi”, “ipEngage”, “ipClient”</td>
</tr>
<tr>
<td>Name</td>
<td>deviceName</td>
<td>String/32</td>
<td>“xxxx….….xxxx”</td>
</tr>
<tr>
<td>Model</td>
<td>mdl</td>
<td>String/4</td>
<td>“gwe”</td>
</tr>
<tr>
<td>Gateway Main Serial Number</td>
<td>mainSn</td>
<td>String/16</td>
<td>Max 16 characters</td>
</tr>
<tr>
<td>Mfg Date</td>
<td>mfgDt</td>
<td>String/8</td>
<td>“YYYYMMDD”, YYYY = Year, MM = Month ( 01 – 12 ), DD = Day ( 01 – 31 ), Example: “20140527” = May 27, 2014</td>
</tr>
<tr>
<td>Hardware Version</td>
<td>hwVer</td>
<td>String/6</td>
<td>“xxxxxx”</td>
</tr>
<tr>
<td>Days In Use</td>
<td>daysInUse</td>
<td>String/5</td>
<td>0-65536</td>
</tr>
<tr>
<td>Gateway Uptime (time since boot)</td>
<td>gwUpTime</td>
<td>String/3</td>
<td>xxx (days)</td>
</tr>
<tr>
<td>Clock Time</td>
<td>rtcTime</td>
<td>String /14</td>
<td>“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month ( 01 – 12 ), DD = Day ( 01 – 31 ), HH = Hour ( 00 – 23 ), MM = Minutes ( 00 – 59 ), SS = Seconds ( 00 – 59 ), Example: “20140710145030” = July 10, 2014, 2:50:30 pm</td>
</tr>
<tr>
<td>Enable Shell Debug Port</td>
<td>sshEnable</td>
<td>String/5</td>
<td>“true”, “false”</td>
</tr>
<tr>
<td>Daylight Saving Time</td>
<td>dstEnable</td>
<td>String/5</td>
<td>&quot;false&quot;=DST not observed, &quot;true&quot;=DST observed</td>
</tr>
<tr>
<td>DST Start</td>
<td>dstStart</td>
<td>String/4</td>
<td>Hour that clocks are moved ahead by 1 hr. B=standard month start (1=Jan), 0=standard day of week start, 0 = Sun, 1=standard week # start, (1=1st,..5=last), 2=standard hour start. US default is B012.</td>
</tr>
<tr>
<td>DST End</td>
<td>dstEnd</td>
<td>String /4</td>
<td>Hour that clocks are moved behind by 1 hour. 3=daylight month start, 0=daylight day of week start, 2=daylight week # start, 2=daylight hour start, US default is 3022.</td>
</tr>
<tr>
<td>Firmware Address</td>
<td>fwUrl</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>Firmware download Time</td>
<td>fwDwnldTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140527040000” = May 27, 2014, 4:00:00 am</td>
</tr>
<tr>
<td>Firmware Implement Time</td>
<td>fwImplTm</td>
<td>String /14</td>
<td>YYYYMMDDHHMMSS – “20140603030000” = June 3, 2014, 3:00:00 am</td>
</tr>
<tr>
<td><strong>IP Interfaces</strong></td>
<td><strong>ipv4Interfaces</strong></td>
<td><strong>Object (parent = gatewayDeviceInfo)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td><strong>Ethernet Interfaces</strong></td>
<td><strong>ethernetProperties</strong></td>
<td><strong>Object (parent = ipv4Interfaces)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Assigned IP Address</td>
<td>assignedIpAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>Default Gateway IP Address</td>
<td>defGatewayIpAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>Netmask</td>
<td>netmask</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td><strong>WiFi Client Properties</strong></td>
<td><strong>wifiClientProperties</strong></td>
<td><strong>Object (parent = ipv4Interfaces)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Gateway IP Address</td>
<td>Assigned IP Address</td>
<td>String/15</td>
<td>assignedIpAddr</td>
</tr>
<tr>
<td>Default Gateway IP Address</td>
<td>Default Gateway IP Address</td>
<td>String/15</td>
<td>defGatewayIpAddr</td>
</tr>
<tr>
<td>Netmask</td>
<td>Netmask</td>
<td>String/15</td>
<td>netmask</td>
</tr>
<tr>
<td><strong>RSI Settings</strong></td>
<td><strong>gatewayRsiModeConfig</strong></td>
<td><strong>Object (parent = gatewayDeviceInfo)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>RSD Address</td>
<td>rsdAddress</td>
<td>Unsigned Int/3</td>
<td>0 to 254, where 170 is not allowed</td>
</tr>
<tr>
<td>Low Door Address</td>
<td>lowDoor</td>
<td>Unsigned Int/3</td>
<td>0 to 254, where 170 is not allowed, must be less than high door setting; default of 0</td>
</tr>
<tr>
<td>High Door Address</td>
<td>highDoor</td>
<td>Unsigned Int/3</td>
<td>0 to 254, where 170 is not allowed, must be greater than Low Door setting; default of 15</td>
</tr>
<tr>
<td><strong>IP Mode Settings</strong></td>
<td><strong>gatewayIpModeConfig</strong></td>
<td><strong>Object (parent = gatewayDeviceInfo)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Gateway Discovery Method</td>
<td>discoveryMethod</td>
<td>String/8</td>
<td>“dhcp”, “staticIP”, “zeroConf”</td>
</tr>
<tr>
<td>Static IP Address, (only applies if discovery method is set to staticIP)</td>
<td>fixedIpAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>Default Gateway IP Address (only applies if discovery method is set to staticIP)</td>
<td>defGatewayIpAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>Netmask (only applies if discovery method is set to staticIP)</td>
<td>netmask</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>IP DNS Service (only applies if discovery method is set to staticIP)</td>
<td>ipDnsAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>Alternate IP DNS Service (only applies if discovery method is set to staticIP)</td>
<td>altDnsAddr</td>
<td>String/15</td>
<td>“xxx.xxx.xxx.xxx”</td>
</tr>
<tr>
<td>IP Server URL (only applies if hostProtocol is ipClient)</td>
<td>ipServerURL</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>CA Server URL (only applies if hostProtocol is ipClient)</td>
<td>caServerURL</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>Keep Alive Time (only applies if hostProtocol is ipClient)</td>
<td>wsKeepAlive</td>
<td>String/4</td>
<td>“1” to “3600” seconds</td>
</tr>
<tr>
<td><strong>Gateway Feature List</strong></td>
<td><strong>gatewayFeatureList</strong></td>
<td><strong>Array of strings (parent = gatewayDeviceInfo)</strong></td>
<td>[“rsiMode”, “ipServerMode”, “ipClientMode”, “lockFwUpgrade”]</td>
</tr>
<tr>
<td><strong>EdgeDevice Firmware Update Status</strong></td>
<td><strong>edgeDeviceFwUrls</strong></td>
<td><strong>Array of Objects (parent = gatewayDeviceInfo)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Firmware Address</td>
<td>fwurl</td>
<td>String/64</td>
<td>Max 64 characters</td>
</tr>
<tr>
<td>Model Type</td>
<td>mdl</td>
<td>String/15</td>
<td>“nde”, “le”, “control”</td>
</tr>
<tr>
<td>Firmware Download Time</td>
<td>fwDwnldTm</td>
<td>String/14</td>
<td>“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month ( 01 – 12 ), DD = Day ( 01 – 31 ), HH = Hour ( 00 – 23 ), MM = Minutes ( 00 – 59 ), SS = Seconds ( 00 – 59 ), Example: “20140710145030” = July 10, 2014, 2:50:30 pm</td>
</tr>
<tr>
<td>Firmware Transfer Time</td>
<td>fwImplTm</td>
<td>String/14</td>
<td>“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month ( 01 – 12 ), DD = Day ( 01 – 31 ), HH = Hour ( 00 – 23 ), MM = Minutes ( 00 – 59 ), SS = Seconds ( 00 – 59 ), Example: “20140710145030” = July 10, 2014, 2:50:30 pm</td>
</tr>
<tr>
<td>Firmware Version</td>
<td>fwVer</td>
<td>String/9</td>
<td>“xx.xx.xx” Example: “02.08.05”</td>
</tr>
<tr>
<td><strong>Firmware Update Status (for the devices of model type indicated in mdl above)</strong></td>
<td><strong>status</strong></td>
<td><strong>Objects (parent = edgeDeviceFwUrls)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Firmware Download Status (Firmware image download to the Gateway)</td>
<td>fwDwnld</td>
<td>String/24</td>
<td>“pendingDwnld” = Device firmware image download to the Gateway from the server is pending. “inProgress” = Device firmware image download to the Gateway from the server is in progress. “completed” = Device firmware is downloaded to the Gateway. “failed” = Device firmware image download to the Gateway from the server is failed. “canceled” = Device firmware image download to the Gateway from the server is canceled. “” = no status available.</td>
</tr>
<tr>
<td>Firmware Update Status (for the model type indicated in the mdl above)</td>
<td>fwUpdate</td>
<td>String/24</td>
<td>“pendingUpdate” = Firmware update to the devices (of the model type indicated in the mdl above) is pending. “inProgress” = Firmware update to the devices (of the model type indicated in the mdl above) is in progress. “suspended” = Firmware update to the devices (of the model type indicated in the mdl above) is suspended, will be resumed later. “completed” = Firmware update to the devices (of the model type indicated in the mdl above) is completed successfully. “pendingVerification” = Firmware is transferred to all the devices (of the model type indicated in the mdl above) successfully, one or more devices are installing the firmware and Gateway is waiting for verification of the firmware update. “pendingReschedule” = Gateway has received a new firmware update request while still in the process of completing a firmware update to the edge device. “pendingReschedule” will be set momentarily while the current update is cancelled and the new update is started. “pendingCancel” = Gateway has received a request to cancel the current firmware update. “pendingCancel” will be set momentarily while the current update is cancelled. “failed” = Firmware update to one or more devices (of the model type indicated in the mdl) is failed. “canceled” = Firmware update to the devices (of the model type indicated in the mdl) is canceled. “” = no status available.</td>
</tr>
<tr>
<td><strong>Extended Firmware Update Status for each Device (for the model type indicated in mdl above)</strong></td>
<td><strong>extendedStatus</strong></td>
<td><strong>Array of objects (parent = edgeDeviceFwUrls)</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Unique Identifier that a host/mapp uses to reference a lock (or other device linked to the Gateway)</td>
<td>linkId</td>
<td>String/32</td>
<td>Device identifier value – alpha-numeric 32 characters</td>
</tr>
<tr>
<td>Device Id</td>
<td>deviceId</td>
<td>String/16</td>
<td>Lower 8 bytes of edge device serial number: &quot;A0B1000000000005&quot;</td>
</tr>
<tr>
<td>Device name</td>
<td>deviceName</td>
<td>String/32</td>
<td></td>
</tr>
<tr>
<td>Device model type</td>
<td>mdl</td>
<td>String/5</td>
<td>“nde”, “le” ,“control”, “cte”</td>
</tr>
<tr>
<td>Device firmware version</td>
<td>fwVer</td>
<td>String/9</td>
<td>“xx.xx.xx” Example: “02.08.05”</td>
</tr>
<tr>
<td>Device firmware update status</td>
<td>fwUpdateStatus</td>
<td>String/24</td>
<td>“pendingUpdate” = Firmware image transfer to the device is pending. “inProgress” = Firmware image transfer to the device is in progress. “suspended” = Firmware transfer is suspended, will be resumed later. “suspended-lowbatt” = Firmware transfer is suspended due to device being in low battery condition, will be resumed later once battery is replaced. “suspended-busy” = Firmware transfer is suspended due to other JSON data (such as configs, database) being transferred to the device, will be resumed later. “completed” = Firmware update to the device is completed successfuly. “pendingVerification” = Firmware is transferred to the device successfully, device is installing the firmware and Gateway is waiting for verification of the firmware update. “pendingVerification-lowbatt” = Firmware is transferred to the device successfully, device has not installed the firmware due to low battery. Replace the battery to continune installing the firmware. “failed” = Firmware update to the device is failed. “canceled” = Firmware update to the device is canceled. “” = no status available.</td>
</tr>
<tr>
<td>Firmware transfer start time for the device (Gateway Time)</td>
<td>fwUpdateStartTm</td>
<td>String/14</td>
<td>“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month ( 01 – 12 ), DD = Day ( 01 – 31 ), HH = Hour ( 00 – 23 ), MM = Minutes ( 00 – 59 ), SS = Seconds ( 00 – 59 ), Example: “20140710145030” = July 10, 2014, 2:50:30 pm</td>
</tr>
<tr>
<td>Firmware transfer complete percentage.</td>
<td>fwTransferCmpltPercentage</td>
<td>Unsigned Int/3</td>
<td>0 to 100</td>
</tr>
<tr>
<td>Firmware update complete time (Gateway Time), (last successful update via Gateway)</td>
<td>fwUpdateCmpltTm</td>
<td>String/14</td>
<td>“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month ( 01 – 12 ), DD = Day ( 01 – 31 ), HH = Hour ( 00 – 23 ), MM = Minutes ( 00 – 59 ), SS = Seconds ( 00 – 59 ), Example: “20140710145030” means device was last upgraded successfully via Gateway on July 10, 2014, 2:50:30 pm</td>
</tr>
<tr>
<td>Firmware update cancel time (Gateway Time)</td>
<td>fwUpdateCancelTm</td>
<td>String/14</td>
<td>“YYYYMMDDHHMMSS”, YYYY = Year, MM = Month ( 01 – 12 ), DD = Day ( 01 – 31 ), HH = Hour ( 00 – 23 ), MM = Minutes ( 00 – 59 ), SS = Seconds ( 00 – 59 ), Example: “20140710145030” = July 10, 2014, 2:50:30 pm</td>
</tr>
<tr>
<td>No of firmware update retries made by the Gateway (in case of update failure)</td>
<td>retries</td>
<td>Unsigned Int/3</td>
<td>0 to 2</td>
</tr>
</tbody>
</table>
<h3>Gateway IP Host Authentication Setup</h3>
<p>Used between Gateway and IP host during initialization of the Gateway using
default logins. This object is returned to the IP Host during a GET from
/gateway/newCredentials.</p>
<p><strong>Table 24: Gateway IP Host Authentication</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>New Login Credentials</strong></td>
<td><strong>credentials</strong></td>
<td><strong>Object (top level parent)</strong></td>
<td></td>
</tr>
<tr>
<td>Unique host login to gateway</td>
<td>usr</td>
<td>String / 32</td>
<td>gateway_&lt;serial number&gt;</td>
</tr>
<tr>
<td>Randomly generated password for host login to gateway</td>
<td>pwd</td>
<td>String / 32</td>
<td>randomly generated password</td>
</tr>
</tbody>
</table>
<h3>Site Survey results</h3>
<p>Gateway will report the results of site survey once the site survey is completed.</p>
<p><strong>Table 25: Site Survey Results</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Time</strong></td>
<td><strong>Time</strong></td>
<td><strong>String/21</strong></td>
<td><strong>“[2018/03/05 12:19:11]”</strong></td>
</tr>
<tr>
<td><strong>Version</strong></td>
<td><strong>Version</strong></td>
<td><strong>String/8</strong></td>
<td><strong>“1.0”</strong></td>
</tr>
<tr>
<td><strong>Site survey</strong></td>
<td><strong>site_survey</strong></td>
<td><strong>Array of objects</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td>Link ID</td>
<td>linkId</td>
<td>String / 15 <strong>(parent = site_survey)</strong></td>
<td>“dev00000”</td>
</tr>
<tr>
<td>Device name</td>
<td>deviceName</td>
<td>String / 32 <strong>(parent = site_survey)</strong></td>
<td>“xxx…xxx”</td>
</tr>
<tr>
<td>Model</td>
<td>model</td>
<td>String/15 <strong>(parent = site_survey)</strong></td>
<td>“nde”, “le”, “control”</td>
</tr>
<tr>
<td>Signal Quality</td>
<td>signalQuality</td>
<td>Unsigned int/3 <strong>(parent = site_survey)</strong></td>
<td>75</td>
</tr>
<tr>
<td><strong>Stop light mapping</strong></td>
<td><strong>stoplightMapping</strong></td>
<td><strong>Object</strong></td>
<td><strong>N/A</strong></td>
</tr>
<tr>
<td><strong>Red</strong></td>
<td><strong>red</strong></td>
<td><strong>String / 3 (parent = stoplightMapping)</strong></td>
<td><strong>“red”</strong></td>
</tr>
<tr>
<td>low</td>
<td>low</td>
<td>Unsigned int/3 <strong>(parent = red)</strong></td>
<td>0 - 100</td>
</tr>
<tr>
<td>high</td>
<td>high</td>
<td>Unsigned int/3 <strong>(parent = red)</strong></td>
<td>0 - 100</td>
</tr>
<tr>
<td><strong>Yellow</strong></td>
<td><strong>yellow</strong></td>
<td><strong>String / 8 (parent = stoplightMapping)</strong></td>
<td><strong>“yellow”</strong></td>
</tr>
<tr>
<td>low</td>
<td>low</td>
<td>Unsigned int/3 <strong>(parent = yellow)</strong></td>
<td>0 -100</td>
</tr>
<tr>
<td>high</td>
<td>high</td>
<td>Unsigned int/3 <strong>(parent = yellow)</strong></td>
<td>0 -100</td>
</tr>
<tr>
<td><strong>Green</strong></td>
<td><strong>green</strong></td>
<td><strong>String / 8 parent = stoplightMapping)</strong></td>
<td><strong>“green”</strong></td>
</tr>
<tr>
<td>low</td>
<td>low</td>
<td>Unsigned int/3 <strong>(parent = green)</strong></td>
<td>0 - 100</td>
</tr>
<tr>
<td>high</td>
<td>high</td>
<td>Unsigned int/3 <strong>(parent = green)</strong></td>
<td>0 - 100</td>
</tr>
</tbody>
</table>
<h3>Gateway Status</h3>
<p><strong>THIS SECTION DEFINES JSON THAT IS ONLY USED INTERNAL TO ALLEGION DEVICES AND SHOULD BE REMOVED 
FROM THIS DOCUMENT PRIOR TO PUBLISHING TO ALLIANCE PARTNERS. #REMOVE_BEFORE_PUBLISHING</strong></p>
<p>Status data structures for error response.</p>
<p><strong>Table 26: Gateway Status</strong></p>
<table>
<thead>
<tr>
<th><strong>Tag</strong></th>
<th><strong>Short Tag</strong></th>
<th><strong>Type/Length</strong>  <strong>(ASCII bytes)</strong></th>
<th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Gateway Status</strong></td>
<td><strong>gatewayStatus</strong></td>
<td><strong>Object (top level parent)</strong></td>
<td></td>
</tr>
<tr>
<td><strong>Gateway audit/diagnostic results</strong></td>
<td><strong>gatewayAudits</strong></td>
<td><strong>Array - parent</strong></td>
<td><strong>Each audit trail entry is an array entry</strong></td>
</tr>
</tbody>
</table>
<h1>Appendix A: Credential Tag Name Definitions</h1>
<p><strong>“norm”</strong> (Normal)</p>
<blockquote>
<p>A normal credential opens a door for a specified time. The time span is
  defined by the relock delay. The normal function works on all devices.</p>
</blockquote>
<p><strong>“freeze”</strong> (Freeze)</p>
<blockquote>
<p>A freeze credential disables the credential reader. After a freeze
  credential has been used on a lock, only a pass through credential will
  operate the lock. Present a freeze credential to return the lock to an
  operational state.</p>
</blockquote>
<p><strong>“toggle”</strong> (Toggle)</p>
<blockquote>
<p>A toggle credential opens a door and leaves it open until it is closed again
  by a toggle credential. It toggles a door between locked and unlocked.</p>
</blockquote>
<p><strong>“passThru”</strong> (Pass Through)</p>
<blockquote>
<p>A pass through credential will always unlock a lock that is in secured
  lockout mode, regardless of how the lock was put in secured lockout mode.</p>
</blockquote>
<p><strong>“lockDown”</strong> (Lock Down)</p>
<blockquote>
<p>A lockdown credential will always put the lock into the secured mode plus
  freeze credential functionality.</p>
</blockquote>
<p>“<strong>oneTm</strong>” (One Time Use)</p>
<blockquote>
<p>A onetime use credential opens a door only once with the normal function.
  Once a onetime use credential has been used on a door, it will no longer
  work on that door. It can still work on other doors, to which is has been
  assigned.</p>
</blockquote>
<p><strong>“dogd”</strong> (Dogged)</p>
<blockquote>
<p>Toggle credential functionality for a crash bar exit device.</p>
</blockquote>
<p><strong>“suprv”</strong> (Supervised)</p>
<blockquote>
<p>Supervised credentials allow access only when a second supervised credential
  is presented.</p>
</blockquote>
<p><strong>“delAlrm”</strong> (Delete with Alarm)</p>
<blockquote>
<p>A delete with audit/alarm credential will log an audit entry that the
  credential was used. However, the credential will NOT unlock the door. If an
  alarm is available on the lock, then the alarm will sound. This
  functionality is the same as the “blocked” credential type.</p>
</blockquote>
<p><strong>“ctAux”</strong> (Ct Auxiliary)</p>
<blockquote>
<p>A CT Aux credential operates the auxiliary relay of a CT Controller, but not
  the main relay. The time span the relay is activated is specified by the
  relock delay.</p>
</blockquote>
<p><strong>“ctMnAux”</strong> (Ct Main and Aux)</p>
<blockquote>
<p>A CT Main and Aux credential operates both the auxiliary relay and main
  relay of a CT controller. The time span the relays are activated as
  specified by the relock delay.</p>
</blockquote>
<p><strong>“ctAuxToggle”</strong> (Ct Auxiliary Toggle)</p>
<blockquote>
<p>A CT Auxiliary Toggle credential changes the state of the auxiliary relay
  from locked to unlocked, or vice versa, unless in a Freeze state.</p>
</blockquote>
<p><strong>“ctMnAuxToggle”</strong> (Ct Main + Aux Toggle)</p>
<blockquote>
<p>A CT Main + Aux Toggle credential changes the state of both the main and
  auxiliary relays from locked to unlocked, or vice versa, unless in a Freeze
  state.</p>
</blockquote>
<p><strong>“ctMnAuxPassThru”</strong> (Ct Main + Aux Pass Through)</p>
<blockquote>
<p>A CT Main + Aux pass through credential unlocks both the main and auxiliary
  relays regardless of state, for the time of the relock delay.</p>
</blockquote>
<p><strong>“updtFrmSvr”</strong>(Update from server)</p>
<blockquote>
<p>Update from server credential will trigger the update from server in SF210
  mode irrespective of lock state. In Sf200 mode this credential will be
  treated as invalid credential.</p>
</blockquote>
<p>“<strong>updtFrmSvrNrm</strong>” (Update from server+Normal)</p>
<blockquote>
<p>Update from server+Normal credential will behave as normal credential and
  then trigger the update from server in SF210 mode irrespective of lock state.</p>
<p>In SF200 mode this credential will be treated as normal credential only.</p>
</blockquote>
<p>“<strong>runDiag</strong>” (run internal diagnostics and report audits)</p>
<blockquote>
<p>The run diagnostics credential will trigger the built-in self-test routines
  of the device and initiate an update from server in order to report the
  results in SF210 mode irrespective of lock state.</p>
<p>In 410IP mode, resultant audits will be sent immediately to the Gateway.</p>
<p>In SF200 and 410RSI mode this credential will be treated as invalid.</p>
</blockquote>
<p>“<strong>calDPS</strong>” (calibrate door position sensor)</p>
<blockquote>
<p>The calibrate DPS credential will establish a new closed “home” position for
  the device. This calibration performs the same functionality as executed
  during commissioning for home position.</p>
</blockquote>
<p>“<strong>blocked</strong>” (Blocked)</p>
<blockquote>
<p>The functionality of the blocked credential type is identical to the
  “delAlrm” credential type as defined above.</p>
</blockquote>
<h2>Credential Tags Supported by Device</h2>
<p><strong>Table 27: Credential Tags Supported by Device</strong></p>
<table>
<thead>
<tr>
<th><strong>Device</strong></th>
<th><strong>Tags supported</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>NDE</td>
<td>“norm”, “freeze”, “toggle”, “passThru”, “lockDown”, “oneTm”, “delAlrm”, “updtFrmSvr”, “updtFrmSvrNrm”, “blocked”</td>
</tr>
<tr>
<td>Schlage Control</td>
<td>“norm”, “freeze”, “toggle” (functions as “norm”), “delAlrm”, “passThru”, “blocked”</td>
</tr>
<tr>
<td>LE</td>
<td>“norm”, “freeze”, “toggle”, “passThru”, “lockDown”, “oneTm”, “delAlrm”, “updtFrmSvr”, “updtFrmSvrNrm”, “blocked”</td>
</tr>
<tr>
<td>CTE</td>
<td>“norm”, “freeze”, “toggle”, “passThru”, “lockDown”, “oneTm”, “delAlrm”, “updtFrmSvr”, “updtFrmSvrNrm”, “blocked”, “ctAux”, “ctAuxToggle”, “ctMnAux”, “ctMnAuxToggle”, “ctMnAuxPassThru”</td>
</tr>
</tbody>
</table>
<h1>Appendix B: Device Specific Characteristics</h1>
<p><strong>Table 28: Device Specific Characteristics</strong></p>
<table>
<thead>
<tr>
<th><strong>Feature</strong></th>
<th><strong>Holidays</strong></th>
<th><strong>Auto Event</strong></th>
<th><strong>Credential Schedule</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>NDE</td>
<td>32</td>
<td>16</td>
<td>16</td>
</tr>
<tr>
<td>SC</td>
<td>N/A</td>
<td>N/A</td>
<td>16</td>
</tr>
<tr>
<td>LE</td>
<td>32</td>
<td>16</td>
<td>16</td>
</tr>
<tr>
<td>RMRU</td>
<td>32</td>
<td>16</td>
<td>N/A</td>
</tr>
</tbody>
</table>
<blockquote>
</blockquote>
 
</body>
</html>
 
 
<!-- This document was created with MarkdownPad, the Markdown editor for Windows (http://markdownpad.com) -->