The APIs can be classified into three categories.
  - Information APIs
- Provide the version and capability information of the device.
- Management APIs
- Provide functions for locking/unlocking/rebooting the device and upgrading its firmware.
- Reset APIs
- Reset the configurations or user database of the device.
GetInfo
Get the version information of a device.
message FactoryInfo {
  string MACAddr;
  string modelName;
  string firmwareVersion;
  string kernelVersion;
  string BSCoreVersion;
  string boardVersion;
}
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | ID of the device | 
  
  
    
      | Parameter | Type | Description | 
  
  
    
      | info | FactoryInfo | Version information of the device | 
  
GetCapabilityInfo
Each device type has its own functionalities. For example, WLAN is supported by BioStation A2, but not by BioStation L2.
message CapabilityInfo {
  Type type;
  uint32 maxNumOfUser;
  bool PINSupported;
  bool cardSupported;
  bool card1xSupported;
  bool SEOSSupported;
  bool fingerSupported;
  bool faceSupported;
  bool userNameSupported;
  bool userPhotoSupported;
  bool userPhraseSupported;
  bool alphanumericIDSupported;
  bool WLANSupported;
  bool imageLogSupported;
  bool VOIPSupported;	
  bool TNASupported;
  bool jobCodeSupported;
  bool wiegandSupported;
  bool wiegandMultiSupported;
  bool triggerActionSupported;
  bool DSTSupported;
  bool DNSSupported;	
  bool OSDPKeySupported;
  bool RS485ExtSupported;
  bool QRSupported;
}
enum Type {
  BIOENTRY_PLUS	= 0x01;
  BIOENTRY_W = 0x02;
  BIOLITE_NET = 0x03;
  XPASS	= 0x04;
  XPASS_S2 = 0x05;
  ENTRY_MAX = 0x05;
  SECURE_IO_2 = 0x06;
  DOOR_MODULE_20 = 0x07;
  BIOSTATION_2 = 0x08;
  BIOSTATION_A2	= 0x09;
  FACESTATION_2	= 0x0A;
  IO_DEVICE = 0x0B;
  BIOSTATION_L2	= 0x0C;
  BIOENTRY_W2 = 0x0D;
  RS485_SLAVE = 0x80;
  CORESTATION_40 = 0x0E;
  OUTPUT_MODULE = 0x0F;
  INPUT_MODULE = 0x10;
  BIOENTRY_P2 = 0x11;
  BIOLITE_N2 = 0x12;
  XPASS2 = 0x13;
  XPASS_S3 = 0x14;
  BIOENTRY_R2 = 0x15;
  XPASS_D2 = 0x16;
  DOOR_MODULE_21 = 0x17;
  XPASS_D2_KEYPAD = 0x18;
  FACELITE = 0x19;
  XPASS2_KEYPAD	= 0x1A;
  XPASS_D2_REV = 0x1B;
  XPASS_D2_KEYPAD_REV = 0x1C;
  FACESTATION_F2_FP = 0x1D;
  FACESTATION_F2 = 0x1E;
  XSTATION_2_QR = 0x1F;
  XSTATION_2 = 0x20;
  IM_120 = 0x21;
  XSTATION_2_FP = 0x22;
  BIOSTATION_3 = 0x23;
  BIOSTATION_2A = 0x26;
  BIOENTRY_W3 = 0x2A;
  CORESTATION_20 = 0x2B;
  DOOR_INTERFACE_24 = 0x2C;
}
enum SwitchType {
  NORMALLY_OPEN = 0x00;
  NORMALLY_CLOSED = 0x01;
}
  - NORMALLY_OPEN
- The switch is open in normal time.
- NORMALLY_CLOSED
- The switch is closed in normal time.
enum LEDColor {
  LED_COLOR_OFF = 0x00;
  LED_COLOR_RED = 0x01;
  LED_COLOR_YELLOW = 0x02;
  LED_COLOR_GREEN = 0x03;
  LED_COLOR_CYAN = 0x04;
  LED_COLOR_BLUE = 0x05;
  LED_COLOR_MAGENTA = 0x06;
  LED_COLOR_WHITE = 0x07;
}
enum BuzzerTone {
  BUZZER_TONE_OFF = 0x00;
  BUZZER_TONE_LOW = 0x01;
  BUZZER_TONE_MIDDLE = 0x02;
  BUZZER_TONE_HIGH = 0x03;
}
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device | 
  
  
    
      | Parameter | Type | Description | 
  
  
    
      | info | CapabilityInfo | The capability information of the device type | 
  
GetCapability
Each device type has its own functionalities. For example, “Extended Auth” is supported by BioStation 3 and FaceStation F2, but not by BioStation 2 and FaceStation 2.
message DeviceCapability {
	uint32 maxUsers;
	uint32 maxEventLogs;
	uint32 maxImageLogs;
	uint32 maxBlacklists;
	uint32 maxOperators;
	uint32 maxCards;
	uint32 maxFaces;
	uint32 maxFingerprints;
	uint32 maxUserNames;
	uint32 maxUserImages;
	uint32 maxUserJobs;
	uint32 maxUserPhrases;
	uint32 maxCardsPerUser;
	uint32 maxFacesPerUser;
	uint32 maxFingerprintsPerUser;
	uint32 maxInputPorts;
	uint32 maxOutputPorts;
	uint32 maxRelays;
	uint32 maxRS485Channels;
	
	bool cameraSupported;
	bool tamperSupported;
	bool wlanSupported;
	bool displaySupported;
	bool thermalSupported;
	bool maskSupported;
	bool faceExSupported;
	bool voipExSupported;
	
	bool EMCardSupported;
	bool HIDProxCardSupported;
	bool MifareFelicaCardSupported;
	bool iClassCardSupported;
	bool ClassicPlusCardSupported;
	bool DesFireEV1CardSupported;
	bool SRSECardSupported;
	bool SEOSCardSupported;
	bool NFCSupported;
	bool BLESupported;
	bool CustomClassicPlusSupported;
	bool CustomDesFireEV1Supported;
	bool TOM_NFCSupported;
	bool TOM_BLESupported;
	bool CustomFelicaSupported;
	bool useCardOperation;
	bool extendedAuthSupported;
	
	bool cardInputSupported;
	bool fingerprintInputSupported;
	bool faceInputSupported;
	bool idInputSupported;
	bool PINInputSupported;
	
	bool biometricOnlySupported;
	bool biometricPINSupported;
	bool cardOnlySupported;
	bool cardBiometricSupported;
	bool cardPINSupported;
	bool cardBiometricOrPINSupported;
	bool cardBiometricPINSupported;
	
	bool idBiometricSupported;
	bool idPINSupported;
	bool idBiometricOrPINSupported;
	bool idBiometricPINSupported;
	
	bool extendedFaceOnlySupported;
	bool extendedFaceFingerprintSupported;
	bool extendedFacePINSupported;
	bool extendedFaceFingerprintOrPINSupported;
	bool extendedFaceFingerprintPINSupported;
	
	bool extendedFingerprintOnlySupported;
	bool extendedFingerprintFaceSupported;
	bool extendedFingerprintPINSupported;
	bool extendedFingerprintFaceOrPINSupported;
	bool extendedFingerprintFacePINSupported;
	
	bool extendedCardOnlySupported;
	bool extendedCardFaceSupported;
	bool extendedCardFingerprintSupported;
	bool extendedCardPINSupported;
	bool extendedCardFaceOrFingerprintSupported;
	bool extendedCardFaceOrPINSupported;
	bool extendedCardFingerprintOrPINSupported;
	bool extendedCardFaceOrFingerprintOrPINSupported;
	bool extendedCardFaceFingerprintSupported;
	bool extendedCardFacePINSupported;
	bool extendedCardFingerprintFaceSupported;
	bool extendedCardFingerprintPINSupported;
	bool extendedCardFaceOrFingerprintPINSupported;
	bool extendedCardFaceFingerprintOrPINSupported;
	bool extendedCardFingerprintFaceOrPINSupported;
	bool extendedIdFaceSupported;
	bool extendedIdFingerprintSupported;
	bool extendedIdPINSupported;
	bool extendedIdFaceOrFingerprintSupported;
	bool extendedIdFaceOrPINSupported;
	bool extendedIdFingerprintOrPINSupported;
	bool extendedIdFaceOrFingerprintOrPINSupported;
	bool extendedIdFaceFingerprintSupported;
	bool extendedIdFacePINSupported;
	bool extendedIdFingerprintFaceSupported;
	bool extendedIdFingerprintPINSupported;
	bool extendedIdFaceOrFingerprintPINSupported;
	bool extendedIdFaceFingerprintOrPINSupported;
	bool extendedIdFingerprintFaceOrPINSupported;
	bool intelligentPDSupported;
	bool updateUserSupported;
	bool simulatedUnlockSupported;
	bool smartCardByteOrderSupported;
	bool qrAsCSNSupported;
	bool rtspSupported;
	bool lfdSupported;
	bool visualQRSupported;
	uint32 maxVoipExtensionNumbers;
	bool osdpStandardCentralSupported;
	bool enableLicenseFuncSupported;
	bool keypadBacklightSupported;
	bool uzWirelessLockDoorSupported;
	bool customSmartCardSupported;
	bool tomSupported;
	bool tomEnrollSupported;
	bool showOsdpResultbyLED;
	bool customSmartCardFelicaSupported;
	bool ignoreInputAfterWiegandOut;
	bool setSlaveBaudrateSupported;
	bool changeRtspResolutionSupported;
	bool changeVoipResolutionSupported;
	bool changeVoipTransportSupported;
	bool showOptionUserInfoSupported;
	bool changeScrambleKeypadSupported;
	uint32 visualFaceTemplateVersion;
	bool authOnlyUnMaskSupported;
	bool mifareExSupported;
	bool lockOverrideSupported;
	bool doorModeOverrideSupported;
	bool alternateAccessTimerSupported;
	bool realtimeIOStatusReportSupported;
	bool dynamicSlaveDeviceSupported;
    bool secureTamperSupported;
	bool customSmartcardSlaveSupported;
	bool serverPrivateMsgSupported;
	bool facilityCodeSupported;
}
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device | 
  
  
    
      | Parameter | Type | Description | 
  
  
    
      | info | DeviceCapability | The capability information of the device type | 
  
Management
Lock
Disable a device temporarily. A locked device will not process any user input.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device to be locked | 
  
LockMulti
Disable multiple devices temporarily.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceIDs | uint32[] | The IDs of the devices to be locked | 
  
Unlock
Unlock a locked device. The device will start processing user input again.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device to be unlocked | 
  
UnlockMulti
Unlock multiple locked devices.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceIDs | uint32[] | The IDs of the devices to be unlocked | 
  
Reboot
Reboot a device.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device to be rebooted | 
  
RebootMulti
Reboot multiple devices
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceIDs | uint32[] | The IDs of the devices to be rebooted | 
  
UpgradeFirmware
Upgrade the firmware of a device. You can download new firmware at our support site.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device to be upgraded | 
    
      | firmwareData | byte[] | The firmware downloaded from the support site | 
  
UpgradeFirmwareMulti
Upgrade the firmware of multiple devices. These devices should be of a same type.
  
    
      | Parameter | Type | Description |  | 
  
  
    
      | deviceIDs | uint32[] | The IDs of the devices to be upgraded |  | 
    
      | firmwareData | byte[] | The firmware downloaded from the support site |  | 
  
Reset
FactoryReset
Reset a device to its initial status.
Be cautious. All the database and configurations of the device will be lost.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device to be reset | 
  
FactoryResetMulti
Reset multiple devices to their initial status.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceIDs | uint32[] | IDs of the devices to be reset | 
  
ClearDB
Clear the user database of a device.
All user information will be lost. You can backup the user database using User.Get before deleting it.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device whose database will be deleted | 
  
ClearDBMulti
Clear the user databases of multiple devices.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceIDs | uint32[] | The IDs of the devices whose databases will be deleted | 
  
ResetConfig
Reset the configurations of a device. If you want to preserve the network configuration, set withNetwork to false. If you want to preserve data such as access groups, access levels, and schedules, set withDB to false.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceID | uint32 | The ID of the device whose configurations will be reset | 
    
      | withNetwork | bool | If true, reset the network configuration, too | 
    
      | withDB | bool | If true, delete data such as access groups, access levels, and schedules, too | 
  
ResetConfigMulti
Reset the configurations of multiple devices.
  
    
      | Parameter | Type | Description | 
  
  
    
      | deviceIDs | uint32[] | The IDs of the devices whose configurations will be reset |