Este artigo descreve o protocolo HTTP REST API disponibilizado pelos dispositivos da linha F4 para integração com sistemas externos por meio do WebService embarcado no equipamento. A API permite o gerenciamento de usuários, biometria, registros de acesso, configurações do dispositivo e demais recursos operacionais através de requisições HTTP utilizando formato JSON.
ATENÇÃO: Na API WebServer, o dispositivo atua como um servidor HTTP, e navegadores ou outros clientes acessam o dispositivo como requisitantes. Portanto, este protocolo é restrito apenas ao uso em Rede Local (LAN) — os clientes devem estar no mesmo segmento de rede do dispositivo para conseguir acessá-lo.
1. Arquitetura do Servidor
| Modo | Porta | Descrição |
|---|---|---|
| HTTP | 80 (padrão) ou personalizada | HTTP padrão |
- Máximo de conexões simultâneas: 20
- Tempo limite de conexão inativa: 10 segundos
- Resposta de timeout: HTTP 408 Timeout
- Resposta de servidor ocupado: HTTP 503 Busy
2. Conexão e Autenticação
2.1 Fluxo de Login
Com exceção do comando getlang, todos os comandos /api exigem o campo password na requisição.
A senha é configurada no menu de configurações do dispositivo.
Observação: Se nenhuma senha tiver sido configurada no dispositivo (senha vazia), todos os endpoints que exigem senha retornarão erro.
2.2 Endpoint de Requisição
Todas as requisições da API JSON são enviadas para:
POST http://<IP_DO_DISPOSITIVO>:<PORTA>/api
Content-Type: application/json
3. Formato Comum de Requisição
{
"cmd": "",
"password": ""
// ... parâmetros específicos do comando
}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cmd | string | Sim | Nome do comando |
password | string | Sim (exceto getlang) | Senha de gerenciamento do dispositivo |
4. Formato Comum de Resposta
{
"ret": "",
"sn": "",
"result": true/false
// ... dados específicos da resposta do comando
}
| Campo | Tipo | Descrição |
|---|---|---|
ret | string | Retorna o nome do comando solicitado |
sn | string | Número de série do dispositivo |
result | bool | Indica se a operação foi concluída com sucesso |
reason | number | Código do motivo da falha (somente em caso de erro) |
msg | string | Descrição textual da falha (somente em caso de erro) |
5. Códigos de Erro
| reason | Descrição |
|---|---|
| 1 | Usuário não encontrado / Erro no formato do parâmetro |
| 2 | Senha incorreta / Senha vazia |
| 3 | Dispositivo ocupado (ex.: cadastro em andamento) |
| 5 | Nenhum rosto detectado na imagem |
| 6 | Múltiplos rostos detectados na imagem |
| 7 | Resolução da imagem muito grande |
| 8 | Área do rosto muito grande |
| 9 | Área do rosto muito pequena |
| 10 | Qualidade da imagem muito baixa |
| 11 | Posição do rosto muito fora do centro |
| 12 | Rosto duplicado (já registrado para outro usuário) |
6. Endpoints HTTP
| Endpoint | Método | Descrição |
|---|---|---|
/api | POST | Endpoint principal da API JSON |
/api/firmware/upload | POST | Upload de firmware em partes (chunked upload) |
/download/report | GET | Download de relatório resumido (.xls) |
/download/rawrecord | GET | Download de registros brutos de ponto (.xls) |
/photos/ | GET | Acesso às fotos de cadastro dos usuários |
/logphotos/ | GET | Acesso às fotos de captura dos registros |
/ | GET | Servidor de arquivos estáticos (de /usr/webserver ou /data/res/webserver) |
7. Referência dos Comandos da API JSON
7.1 Autenticação e Informações do Dispositivo
7.1.1 getlang — Obter Idioma Atual
Esse é o único comando que não necessita de senha.
Requisição:
{
"cmd": "getlang"
}
Resposta:
{
"ret": "getlang",
"sn": "SN123456",
"result": true,
"lang": "English"
}
| Campo | Tipo | Descrição |
|---|---|---|
lang | string | Nome do idioma atualmente configurado |
7.1.2 reg — Obter Informações Completas de Registro do Dispositivo
Requisição:
{
"cmd": "reg",
"password": "xxx"
}
Exemplo de Resposta:
{
"ret": "reg",
"sn": "AYSH01090913",
"devinfo": {
"modelname": "AiFace",
"manufacturer": "",
"deviceid": 1,
"usersize": 15000,
"facesize": 5000,
"fpsize": 0,
"palmsize": 0,
"cardsize": 15000,
"pwdsize": 15000,
"logsize": 500000,
"useduser": 16,
"usedface": 15,
"usedfp": 0,
"usedpalm": 0,
"usedcard": 15,
"usedpwd": 0,
"usedlog": 936,
"usednewlog": 936,
"usedrtlog": 14,
"netinuse": 1,
"usb4g": 0,
"fpalgo": "thbio3.0",
"firmware": "ai518_fp26v_v2.16",
"time": "2026-06-01 09:58:54",
"intercom": 0,
"elevator_control": 0,
"floors": 48,
"base_floor": 0,
"have_g_floor": 0,
"acces_stimes": 0,
"charid": 1,
"useosdp": 0,
"facetemplate": 0,
"usequestion": 1,
"onlinedebug": 0,
"dislanguage": 524417,
"curip": "010.000.040.009",
"ntp": 0,
"timezone": "UTC-3",
"mac": "00-01-A9-1A-FC-AB"
}
}
Campos do devinfo
| Campo | Tipo | Descrição |
|---|---|---|
modelname | string | Nome do modelo do dispositivo |
manufacturer | string | Fabricante |
deviceid | number | ID do dispositivo |
usersize | number | Capacidade máxima de usuários |
facesize | number | Capacidade máxima de faces |
fpsize | number | Capacidade máxima de digitais |
palmsize | number | Capacidade máxima de palmas |
cardsize | number | Capacidade máxima de cartões |
pwdsize | number | Capacidade máxima de senhas |
logsize | number | Capacidade máxima de logs |
useduser | number | Quantidade atual de usuários cadastrados |
usedface | number | Quantidade atual de faces cadastradas |
usedfp | number | Quantidade atual de digitais cadastradas |
usedpalm | number | Quantidade atual de palmas cadastradas |
usedcard | number | Quantidade atual de cartões cadastrados |
usedpwd | number | Quantidade atual de senhas cadastradas |
usedlog | number | Quantidade total de logs |
usednewlog | number | Quantidade de novos logs |
usedrtlog | number | Quantidade de logs em tempo real |
netinuse | number | Rede em uso (0=nenhuma, 1=cabeada, 2=Wi-Fi, 3=4G) |
usb4g | number | Módulo USB 4G presente (0=não, 1=sim) |
fpalgo | string | Versão do algoritmo biométrico |
firmware | string | Versão do firmware |
time | string | Data e hora atual do dispositivo |
intercom | number | Suporte a interfone (0=não, 1=sim) |
elevator_control | number | Controle de elevador habilitado |
floors | number | Quantidade total de andares |
base_floor | number | Andar base |
have_g_floor | number | Possui andar térreo (G) |
acces_stimes | number | Quantidade de acessos |
charid | number | ID de caracteres |
useosdp | number | Uso do protocolo OSDP |
facetemplate | number | Modo do template facial |
usequestion | number | Questionário habilitado |
onlinedebug | number | Depuração online habilitada |
dislanguage | number | Máscara de idiomas desabilitados |
curip | string | Endereço IP atual |
ntp | number | NTP habilitado |
timezone | string | Fuso horário |
mac | string | Endereço MAC do dispositivo |
7.1.3 getdevinfo — Obter Parâmetros de Configuração do Dispositivo
Requisição:
{
"cmd": "getdevinfo",
"password": "xxx"
}
Resposta:
Retorna todos os parâmetros de configuração DI_ no formato chave-valor.
Exemplo de Resposta
{
"ret": "getdevinfo",
"sn": "SN123456",
"result": true,
"deviceid": 1,
"language": 0,
"managers": 1,
"verifymode": 0,
"volume": 80,
"netipaddress": "192.168.1.100",
"serverip": "192.168.1.200",
"wlan_ssid": "MyWiFi",
"door_opentime": 5,
"live_detect": 1,
"fcmatch_level": 60
}
Lista Completa de Parâmetros de Configuração
Configurações Gerais
| Campo | Tipo | Descrição |
|---|---|---|
deviceid | number | ID do dispositivo |
language | number | Idioma |
managers | number | Número de administradores |
verifymode | number | Modo de verificação |
volume | number | Volume |
video_clarity | number | Qualidade do vídeo |
micvolume | number | Volume do microfone |
intercomvolume | number | Volume do interfone |
date_format | number | Formato da data |
label_style | number | Estilo de exibição |
keyboard | number | Configuração do teclado |
usegps | number | Utilizar GPS |
time_format | number | Formato da hora |
use_dst | number | Utilizar horário de verão |
dst_start | number | Início do horário de verão |
dst_end | number | Fim do horário de verão |
show_avatar | number | Exibir avatar |
show_battery | number | Exibir bateria |
use_qrcode | number | Habilitar QR Code |
screensavertime | number | Tempo do protetor de tela (segundos) |
showresulttime | number | Tempo de exibição do resultado da verificação |
sleeptime | number | Tempo para entrar em repouso |
screensaver_wakeup | number | Modo de despertar do protetor de tela |
stranger_photo | number | Foto de desconhecidos |
stranger_lock | number | Bloqueio de desconhecidos |
verifyfail_hint | number | Aviso de falha de verificação |
userid_format | number | Formato do ID do usuário |
rfid_free_reg | number | Cadastro RFID livre |
rfid_auto_reg | number | Cadastro automático RFID |
shift_weekend_ot | number | Hora extra em fim de semana |
rfid_module_type | number | Tipo do módulo RFID |
filllight | number | Luz de preenchimento |
filllight_period | number | Período da luz de preenchimento |
accept_dose | number | Dose aceita |
face_double_check | number | Dupla verificação facial |
glog_warning | number | Limite de alerta de logs de acesso |
slog_warning | number | Limite de alerta de logs do sistema |
reverifytime | number | Intervalo para nova verificação |
use_logphoto | number | Utilizar foto nos logs |
tts_voice | number | Voz TTS |
online_debug | number | Depuração online |
hide_ota | number | Ocultar atualização OTA |
multifaces | number | Reconhecimento múltiplo de faces |
disable_menu | number | Desabilitar menu |
server_keypad | number | Teclado do servidor |
keypad_pwd | number | Senha do teclado |
reverify_nolock | number | Reverificação sem bloqueio |
default_shift | number | Turno padrão |
saturday_attend | number | Presença no sábado |
sunday_attend | number | Presença no domingo |
allow_latetime | number | Tempo permitido de atraso (minutos) |
allow_earlytime | number | Tempo permitido para saída antecipada |
auto_sign | number | Assinatura automática |
shift_weekend | number | Turno de fim de semana |
excel_password | string | Senha de exportação Excel |
nosavelog | number | Não salvar logs |
hide_privacy | number | Proteção de privacidade |
reboottime1 | number | Horário programado de reinicialização 1 |
reboottime2 | number | Horário programado de reinicialização 2 |
reboottime3 | number | Horário programado de reinicialização 3 |
reg_card_1 | number | Cartão de registro 1 |
reg_card_2 | number | Cartão de registro 2 |
reg_card_3 | number | Cartão de registro 3 |
selfchecklog | number | Log de auto verificação |
questionnaire | number | Questionário |
questionnaire_card | number | Cartão de questionário |
questionnaire_switch_card | number | Alternância de cartão do questionário |
event_schedule | number | Agenda de eventos 0 |
event_schedule1 | number | Agenda de eventos 1 |
event_schedule2 | number | Agenda de eventos 2 |
event_schedule3 | number | Agenda de eventos 3 |
event_schedule4 | number | Agenda de eventos 4 |
event_schedule5 | number | Agenda de eventos 5 |
event_schedule6 | number | Agenda de eventos 6 |
event_schedule7 | number | Agenda de eventos 7 |
event_schedule8 | number | Agenda de eventos 8 |
bellcount | number | Quantidade de campainhas |
belloutput | number | Saída da campainha |
ring_style | number | Estilo do toque |
Configurações Biométricas
| Campo | Tipo | Descrição |
|---|---|---|
live_detect | number | Detecção de vivacidade |
live_level | number | Nível de detecção de vivacidade |
fcmatch_level | number | Nível de correspondência facial |
identify_distance | number | Distância de identificação |
fpmatch_level | number | Nível de correspondência de impressão digital |
palm_vein_level | number | Nível da veia da palma |
palm_det_level | number | Nível de detecção da palma |
fps_peruser | number | Impressões digitais por usuário |
disable_face | number | Desabilitar reconhecimento facial |
enable_palm | number | Habilitar reconhecimento de palma |
Configurações Seriais e de Rede
| Campo | Tipo | Descrição |
|---|---|---|
usedcom | number | Porta serial utilizada |
combaurate | number | Baud rate da serial |
netipaddress | IP | Endereço IP Ethernet |
netmask | IP | Máscara de sub-rede |
netgateway | IP | Gateway |
use_eth_dhcp | number | Utilizar DHCP Ethernet |
commpassword | number | Senha de comunicação |
netportnum | number | Porta de rede |
rs485_fun | number | Função RS485 |
use_wlan | number | Utilizar Wi-Fi |
use_wlan_dhcp | number | Utilizar DHCP Wi-Fi |
wlan_ip_address | IP | IP Wi-Fi |
wlan_net_mask | IP | Máscara Wi-Fi |
wlan_gateway | IP | Gateway Wi-Fi |
wlan_ssid | string | SSID Wi-Fi |
wlan_pwd | string | Senha Wi-Fi |
gprs_apn | string | APN GPRS |
gps_duration | number | Intervalo de relatório GPS |
gprs_ipaddress | number | IP GPRS |
gprs_macaddress | number | MAC GPRS |
Configurações do Servidor
| Campo | Tipo | Descrição |
|---|---|---|
serverip | IP | Endereço IP do servidor |
serverport | number | Porta do servidor |
webserverport | number | Porta do WebServer |
server_response_time | number | Tempo limite de resposta do servidor |
user_add_enable | number | Permitir adicionar usuários |
use_bs | number | Utilizar serviço backend |
use_webserver | number | Utilizar WebServer |
bs_domain_name | string | Domínio do serviço backend |
use_domain_name | number | Utilizar nome de domínio |
dns_server_ip | IP | IP do servidor DNS |
server_dns_name | string | Nome DNS do servidor |
server_verify | number | Modo de verificação do servidor |
server_verify_timeout | number | Timeout de verificação do servidor |
use_ntp | number | Utilizar NTP |
ntp_timezone | number | Fuso horário NTP |
7.1.4 setdevinfo — Definir Parâmetros de Configuração do Dispositivo
Requisição:
{
"cmd": "setdevinfo",
"password": "xxx",
"nowtime": 1700000000,
"deviceid": 1,
"volume": 80,
"live_detect": 1,
"fcmatch_level": 60
}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
nowtime | number | Não | Timestamp Unix (ms) para sincronização de horário |
| Outros campos | – | Não | Qualquer parâmetro DI_*; inclua apenas os itens que deseja alterar |
Regras de Tipo
- Campos do tipo IP (
netipaddress,serverip, etc.) aceitam strings de IP como"192.168.1.100" - Campos string (
wlan_ssid,excel_password,cpucard_key, etc.) aceitam texto - Todos os demais campos aceitam valores numéricos
7.1.5 getdevcap — Obter Informações de Capacidade do Dispositivo
Requisição:
{
"cmd": "getdevcap",
"password": "xxx"
}
Resposta:
{
"ret": "getdevcap",
"sn": "SN123456",
"result": true,
"usersize": 10000,
"facesize": 10000,
"avatarsize": 10000,
"fpsize": 30000,
"palmsize": 30000,
"cardsize": 10000,
"pwdsize": 10000,
"logsize": 100000,
"useduser": 150,
"usedface": 148,
"usedavatar": 100,
"usedfp": 10,
"usedpalm": 0,
"usedcard": 50,
"usedpwd": 20,
"usedlog": 5000,
"usednewlog": 100,
"usedrtlog": 5
}
| Campo | Tipo | Descrição |
|---|---|---|
usersize | number | Capacidade máxima de usuários |
facesize | number | Capacidade máxima de faces |
avatarsize | number | Capacidade máxima de avatares |
fpsize | number | Capacidade máxima de impressões digitais |
palmsize | number | Capacidade máxima de palmas |
cardsize | number | Capacidade máxima de cartões |
pwdsize | number | Capacidade máxima de senhas |
logsize | number | Capacidade máxima de logs |
useduser | number | Usuários atualmente cadastrados |
usedface | number | Faces atualmente cadastradas |
usedavatar | number | Avatares atualmente cadastrados |
usedfp | number | Impressões digitais cadastradas |
usedpalm | number | Palmas cadastradas |
usedcard | number | Cartões cadastrados |
usedpwd | number | Senhas cadastradas |
usedlog | number | Total de logs |
usednewlog | number | Novos logs não lidos |
usedrtlog | number | Logs em tempo real |
7.2 Gerenciamento de Usuários
7.2.1 getuserlist — Obter Lista de Usuários (Paginada)
Requisição:
{
"cmd": "getuserlist",
"password": "xxx",
"stn": 1
}
| Campo | Tipo | Descrição |
|---|---|---|
stn | number | 1 = iniciar do começo; 0 = continuar próxima página |
Resposta:
{
"ret": "getuserlist",
"sn": "SN123456",
"result": true,
"count": 100,
"to": 50,
"record": [
{
"id": "1001",
"name": "John Doe",
"department": "Engineering",
"shift": 0,
"admin": 0,
"fingerprint": 2,
"palm": 0,
"face": 1,
"password": 0,
"card": 12345678,
"weekzone": 0,
"group": 0,
"access_times": 0,
"verifymode": 0,
"birthday": "01-15",
"starttime": "2024-01-01 00:00",
"endtime": "2025-12-31 23:59",
"photourl": "/photos/LF00001001.jpg"
}
]
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
count | number | Quantidade total de usuários |
to | number | Quantidade de registros retornados (0 se não houver mais dados) |
record[] | array | Lista de usuários (máximo de 50 por requisição) |
Campos de record[]
| Campo | Tipo | Descrição |
|---|---|---|
record[].id | string | ID do usuário |
record[].name | string | Nome do usuário |
record[].department | string | Departamento |
record[].shift | number | ID do turno |
record[].admin | number | Permissão administrativa (0=usuário, 1=administrador) |
record[].fingerprint | number | Quantidade de digitais cadastradas |
record[].palm | number | Quantidade de palmas cadastradas |
record[].face | number | Quantidade de faces cadastradas |
record[].password | number | Indicador de senha cadastrada |
record[].card | number | Número do cartão |
record[].weekzone | number | ID da zona semanal |
record[].group | number | ID do grupo |
record[].access_times | number | Quantidade de acessos permitidos |
record[].verifymode | number | Modo de verificação |
record[].birthday | string | Data de nascimento (MM-DD) |
record[].starttime | string | Data/hora inicial de validade |
record[].endtime | string | Data/hora final de validade |
record[].photourl | string | URL da foto do usuário |
record[].userprofile | string | Perfil do usuário (quando disponível) |
Observações
- Cada requisição retorna no máximo 50 usuários.
- Para continuar a leitura das próximas páginas, envie:
{
"cmd": "getuserlist",
"password": "xxx",
"stn": 0
}
- Continue realizando chamadas até:
to >= count- ou
to == 0(sem mais registros).
7.2.2 checkuserid — Verificar se o ID do Usuário Existe
Requisição
{
"cmd": "checkuserid",
"password": "xxx",
"enrollid": "1001"
}
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | ID do usuário a ser verificado |
Resposta
{
"ret": "checkuserid",
"sn": "SN123456",
"result": true,
"exists": true
}
| Campo | Tipo | Descrição |
|---|---|---|
exists | bool | Indica se o usuário existe |
7.2.3 getuserinfo — Obter Informações de um Usuário
Requisição:
{
"cmd": "getuserinfo",
"password": "xxx",
"enrollid": "1001",
"backupnum": 50
}
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | ID do usuário ou ID alternativo |
backupnum | number | Opcional — recupera dados biométricos específicos |
Resposta (com foto facial, backupnum=50)
{
"ret": "getuserinfo",
"sn": "SN123456",
"result": true,
"enrollid": "1001",
"name": "John Doe",
"department": "Engineering",
"admin": 0,
"pwd": 0,
"card": 12345678,
"fpflag": 3,
"fpcnt": 2,
"faceflag": 1,
"birthday": "01-15",
"starttime": "2024-01-01 00:00:00",
"endtime": "2025-12-31 23:59:59",
"photourl": "/photos/LF00001001.jpg",
"backupnum": 50,
"record": ""
}
Resposta (usuário não encontrado)
{
"ret": "getuserinfo",
"sn": "SN123456",
"result": false,
"reason": 1,
"msg": "can not find the user",
"enrollid": "1001"
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string | ID do usuário |
name | string | Nome do usuário |
department | string | Departamento |
admin | number | Permissão administrativa |
pwd | number | Indicador de senha |
card | number | ID do cartão |
fpflag | number | Máscara de digitais cadastradas |
fpcnt | number | Quantidade de digitais cadastradas |
palmflag | number | Máscara de palmas cadastradas |
palmcnt | number | Quantidade de palmas cadastradas |
faceflag | number | Indicador facial |
enable | number | Usuário habilitado |
birthday | string | Data de nascimento (MM-DD) |
shiftid | number | ID do turno |
verifymode | number | Modo de verificação |
zoneid | number | ID da zona de horário |
groupid | number | ID do grupo |
access_times | number | Quantidade de acessos permitidos |
postid | number | ID do departamento/cargo |
starttime | string | Data/hora inicial de validade |
endtime | string | Data/hora final de validade |
userprofile | string | Perfil do usuário |
backupnum | number | backupnum solicitado |
record | string | Dados biométricos em Base64 |
photourl | string | URL da foto do usuário |
7.2.4 setuserinfo — Adicionar ou Atualizar Usuário
Requisição:
{
"cmd": "setuserinfo",
"password": "xxx",
"enrollid": "1001",
"name": "John Doe",
"admin": 0,
"pwd": 123456,
"card": 12345678,
"department": "Engineering",
"birthday": "01-15",
"starttime": "2024-01-01 00:00:00",
"endtime": "2025-12-31 23:59:59",
"verifymode": 0,
"shiftid": 1,
"zoneid": 1,
"groupid": 0,
"access_times": 0,
"enable": 1,
"face": ""
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | ID do usuário |
name | string | Nome completo |
admin | number | Permissão (0=usuário, 1=admin) |
pwd | number | Senha numérica |
card | number/string | Número do cartão RFID |
department | string | Departamento |
postid | number | ID do cargo/departamento |
birthday | string | Data de nascimento (MM-DD) |
starttime | string | Data/hora inicial |
endtime | string | Data/hora final |
verifymode | number | Modo de verificação |
shiftid | number | ID do turno |
zoneid | number | ID da zona de horário |
groupid | number | ID do grupo |
access_times | number | Quantidade permitida de acessos |
enable | number | Usuário habilitado (0/1) |
face | string | Imagem facial em Base64 |
backupnum | number | Índice biométrico |
record | string | Template biométrico em Base64 |
userprofile | string | Perfil do usuário |
Resposta (sucesso):
{
"ret": "setuserinfo",
"sn": "SN123456",
"result": true,
"enrollid": "1001",
"backupnum": 50
}
Resposta (falha):
{
"ret": "setuserinfo",
"sn": "SN123456",
"result": false,
"reason": 5,
"msg": "no face",
"enrollid": "1001"
}
Códigos de erro de cadastro facial
| reason | Descrição |
|---|---|
| 1 | Arquivo de imagem muito grande |
| 5 | Nenhum rosto detectado |
| 6 | Múltiplos rostos detectados |
| 7 | Dimensões da imagem muito grandes |
| 8 | Região do rosto muito grande |
| 9 | Região do rosto muito pequena |
| 10 | Qualidade da imagem muito baixa |
| 11 | Rosto muito fora do centro |
| 12 | Rosto duplicado |
7.2.5 deleteuser — Excluir Usuário ou Biométricos
Requisição:
{
"cmd": "deleteuser",
"password": "xxx",
"enrollid": "1001",
"backupnum": 12
}
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | ID do usuário |
backupnum | number | Tipo da ação |
Valores de backupnum
| backupnum | Ação |
|---|---|
12 ou 13 | Excluir usuário completo |
0-9 | Excluir digital do índice especificado |
10 | Limpar senha |
11 | Limpar cartão |
40/41 | Excluir palma esquerda/direita |
50 ou 51 | Excluir face |
Resposta:
{
"ret": "deleteuser",
"sn": "SN123456",
"result": true,
"backupnum": 12,
"enrollid": "1001"
}
| Campo | Tipo | Descrição |
|---|---|---|
backupnum | number | Valor retornado do backupnum |
enrollid | string | ID do usuário |
7.2.6 deleteuserface — Excluir Face do Usuário
Requisição:
{
"cmd": "deleteuserface",
"password": "xxx",
"enrollid": "1001"
}
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | ID do usuário |
Resposta:
{
"ret": "deleteuserface",
"sn": "SN123456",
"result": true,
"enrollid": "1001"
}
7.2.7 deleteusers — Excluir Usuários em Lote
Requisição:
{
"cmd": "deleteusers",
"password": "xxx",
"list": ["1001", "1002", "1003"]
}
| Campo | Tipo | Descrição |
|---|---|---|
list | array | Lista de IDs de usuários a serem removidos |
Resposta:
{
"ret": "deleteusers",
"sn": "SN123456",
"result": true
}
7.2.8 cleanuser — Excluir Todos os Usuários
Requisição:
{
"cmd": "cleanuser",
"password": "xxx"
}
DESTRUTIVO: Remove todos os usuários cadastrados no dispositivo.
Resposta:
{
"ret": "cleanuser",
"sn": "SN123456",
"result": true
}
7.2.9 enableuser — Habilitar ou Desabilitar Usuário
Requisição
{
"cmd": "enableuser",
"password": "xxx",
"enrollid": "1001",
"enflag": 1
}
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | ID do usuário |
enflag | number | 1=habilitar, 0=desabilitar |
Resposta
{
"ret": "enableuser",
"sn": "SN123456",
"result": true,
"enrollid": "1001"
}
7.3 Cadastro Biométrico (No Próprio Dispositivo)
7.3.1 adduser — Iniciar Cadastro Biométrico no Dispositivo
Aciona a tela local do dispositivo para realizar o cadastro de biometria (digital, palma ou face).
Requisição
{
"cmd": "adduser",
"password": "xxx",
"enrollid": "1001",
"name": "John Doe",
"admin": 0,
"backupnum": 50,
"flag": 0
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
cancel | bool | Defina como true para cancelar o cadastro em andamento |
enrollid | string/number | ID do usuário |
backupnum | number | Tipo de cadastro biométrico |
admin | number | Define se o usuário será administrador |
flag | number | Flags de configuração |
name | string | Nome do usuário |
Resposta (sucesso)
{
"ret": "adduser",
"sn": "SN123456",
"result": true,
"backupnum": 50,
"enrollid": "1001"
}
Resposta (cancelamento)
{
"ret": "adduser",
"result": true,
"cancel": true
}
Resposta (falha)
{
"ret": "adduser",
"sn": "SN123456",
"result": false,
"reason": 3,
"msg": "device busy",
"backupnum": 50,
"enrollid": "1001"
}
Códigos de Erro
| reason | Descrição |
|---|---|
1 | ID do usuário vazio |
2 | backupnum inválido |
3 | Dispositivo ocupado (já existe um cadastro em andamento) |
7.3.2 checkregstatus — Consultar Status do Cadastro Biométrico
Requisição
{
"cmd": "checkregstatus",
"password": "xxx"
}
Resposta
{
"ret": "checkregstatus",
"sn": "SN123456",
"result": true,
"status": 1,
"msg": "success",
"image": ""
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
status | number | Código do status do cadastro |
msg | string | Mensagem de status (limpa após leitura) |
image | string | Imagem de pré-visualização em Base64 |
Códigos de Status
| status | Descrição |
|---|---|
-1 | Inativo / cancelado |
0 | Cadastro em andamento |
1 | Cadastro realizado com sucesso |
| outro valor | Falha no cadastro |
7.4 Gerenciamento de Logs
7.4.1 getlog — Obter Logs Históricos (Paginado)
Requisição
{
"cmd": "getlog",
"password": "xxx",
"index": 0,
"enrollid": "1001",
"from": "240601",
"to": "241231"
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
index | number | Posição inicial (0 = iniciar nova consulta) |
enrollid | string/number | Opcional — filtrar por usuário específico |
from | string | Opcional — data inicial no formato YYMMDD |
to | string | Opcional — data final no formato YYMMDD |
Resposta
Retorna até 50 registros por requisição.
{
"ret": "getlog",
"sn": "SN123456",
"result": true,
"count": 500,
"from": 0,
"to": 50,
"record": [
{
"enrollid": "1001",
"name": "John Doe",
"time": "2024-06-01 09:00:00",
"mode": 1,
"inout": 1,
"event": 0,
"note": "remark",
"photourl": "/logphotos/logimage123.jpg"
}
]
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
count | number | Quantidade total de logs encontrados |
from | number | Índice inicial dos registros retornados |
to | number | Índice final dos registros retornados |
record[] | array | Lista de registros de log |
Campos de record[]
| Campo | Tipo | Descrição |
|---|---|---|
record[].enrollid | string | ID do usuário |
record[].name | string | Nome do usuário |
record[].time | string | Data e hora do registro |
record[].mode | number | Método de verificação (1=face, 2=digital, 3=cartão, 4=senha, etc.) |
record[].inout | number | Direção (1=entrada, 0=saída) |
record[].event | number | Código do evento |
record[].note | string/object | Observação adicional |
record[].photourl | string | URL da foto capturada no registro |
Paginação
Para continuar a leitura dos próximos registros, envie novamente o comando alterando o index.
Exemplo:
{
"cmd": "getlog",
"password": "xxx",
"index": 50
}
Continue realizando chamadas até:
ou não existirem mais registros retornados.
to >= count
7.4.2 getrtlog — Obter Logs em Tempo Real (Consumidos na Leitura)
Requisição
{
"cmd": "getrtlog",
"password": "xxx",
"index": 0
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
index | number | Posição inicial (0 = iniciar nova consulta) |
Resposta
{
"ret": "getrtlog",
"sn": "SN123456",
"result": true,
"count": 25,
"from": 0,
"to": 20,
"record": [
{
"enrollid": "1001",
"name": "John Doe",
"time": "2024-06-01 09:00:00",
"mode": 1,
"inout": 1,
"event": 0,
"note": "remark"
}
]
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
count | number | Quantidade total de logs em tempo real na fila |
from | number | Índice inicial retornado |
to | number | Índice final retornado |
record[] | array | Lista de registros de log |
Campos de record[]
Os campos são os mesmos utilizados no comando getlog.
| Campo | Tipo | Descrição |
|---|---|---|
record[].enrollid | string | ID do usuário |
record[].name | string | Nome do usuário |
record[].time | string | Data e hora do registro |
record[].mode | number | Método de verificação |
record[].inout | number | Direção (1=entrada, 0=saída) |
record[].event | number | Código do evento |
record[].note | string/object | Observação adicional |
Observações
- Os logs em tempo real são removidos da fila após serem lidos.
- Cada requisição retorna no máximo 20 registros.
- Continue realizando chamadas incrementando o
indexaté:to >= count
Exemplo:
{
"cmd": "getrtlog",
"password": "xxx",
"index": 20
}
7.4.3 setlogs — Marcar Logs como Sincronizados
Requisição
{
"cmd": "setlogs",
"password": "xxx",
"records": [
{
"id": "1001",
"event": 0,
"mode": 1,
"time": "2024-06-01 09:00:00"
}
]
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
records | array | Lista de logs a serem marcados como sincronizados |
records[].id | string/number | ID do usuário |
records[].event | number | Tipo de evento |
records[].mode | number | Método de verificação |
records[].time | string | Data e hora do log |
Resposta
{
"ret": "setlogs",
"sn": "SN123456",
"result": true
}
7.4.4 cleanlog — Limpar Todos os Logs
Requisição
{
"cmd": "cleanlog",
"password": "xxx"
}
DESTRUTIVO: Remove todos os logs históricos de acesso/ponto do dispositivo.
Resposta
{
"ret": "cleanlog",
"sn": "SN123456",
"result": true
}
7.5 Gerenciamento do Sistema
7.5.1 gettime — Obter Horário do Dispositivo
Requisição
{
"cmd": "gettime",
"password": "xxx"
}
Resposta
{
"ret": "gettime",
"sn": "SN123456",
"time": "2024-06-01 10:00:00"
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
time | string | Horário atual do dispositivo |
7.5.2 settime — Ajustar Horário do Dispositivo
Método 1 — Utilizando data/hora em texto
{
"cmd": "settime",
"password": "xxx",
"cloudtime": "2024-06-01 10:00:00"
}
Método 2 — Utilizando timestamp Unix em milissegundos
{
"cmd": "settime",
"password": "xxx",
"nowtime": 1717200000000
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
cloudtime | string | Data/hora no formato YYYY-MM-DD HH:MM:SS |
nowtime | number | Timestamp Unix em milissegundos |
Utilize apenas um dos campos:
cloudtimeounowtime.
Resposta (sucesso)
{
"ret": "settime",
"sn": "SN123456",
"result": true
}
Resposta (falha)
{
"ret": "settime",
"sn": "SN123456",
"result": false,
"reason": 1
}
Validações
O dispositivo valida:
- Ano maior ou igual a
2021 - Mês entre
1-12 - Dia válido
- Hora válida
- Minuto válido
- Segundo válido
Em caso de falha, será retornado:
| reason | Descrição |
|---|---|
1 | Data/hora inválida |
7.5.3 reboot — Reiniciar Dispositivo
Requisição
{
"cmd": "reboot",
"password": "xxx"
}
O dispositivo reinicia imediatamente.
A conexão será encerrada automaticamente pelo equipamento.
Não existe resposta HTTP.
7.5.4 initsys — Inicialização Completa do Sistema (Limpeza Total)
DESTRUTIVO: Remove todos os usuários, logs e configurações do dispositivo.
Itens removidos:
- Usuários cadastrados
- Registros de acesso/ponto
- Configurações do sistema
- Agendamentos de campainha (bell schedules)
- Dados de departamentos/cargos
- Configurações de controle de ponto
- Dados de controle de acesso/fechaduras
Itens preservados:
- Idioma configurado no dispositivo
- Configurações de Wi-Fi (são armazenadas em backup)
Requisição
{
"cmd": "initsys",
"password": "xxx"
}
Resposta
{
"ret": "initsys",
"sn": "SN123456",
"result": true
}
7.5.5 initmenu — Restaurar Configurações do Menu
Restaura as configurações do sistema para os valores padrão, preservando usuários e registros.
Requisição
{
"cmd": "initmenu",
"password": "xxx"
}
Resposta
{
"ret": "initmenu",
"sn": "SN123456",
"result": true
}
Observação
Este comando possui comportamento semelhante ao initsys, porém:
Restaura apenas as configurações do equipamento
Mantém os usuários cadastrados
Mantém os logs armazenados
7.5.6 cleandatebase — Limpar Banco de Dados de Logs
DESTRUTIVO: Remove completamente o banco de dados de registros do dispositivo.
Após a execução:
- Todos os logs serão apagados
- Uma flag de reinicialização será configurada
- O equipamento será reiniciado automaticamente
Requisição
{
"cmd": "cleandatebase",
"password": "xxx"
}
Resposta
{
"ret": "cleandatebase",
"sn": "SN123456",
"result": true
}
7.5.7 cleanadmin — Remover Todas as Permissões de Administrador
Remove privilégios administrativos de todos os usuários cadastrados no dispositivo.
Requisição
{
"cmd": "cleanadmin",
"password": "xxx"
}
Resposta
{
"ret": "cleanadmin",
"sn": "SN123456",
"result": true
}
7.6 Controle de Acesso
7.6.1 opendoor — Abertura Remota de Porta
Permite realizar a abertura remota da porta controlada pelo dispositivo. Opcionalmente, é possível associar a operação a um usuário específico, acionar um andar em sistemas de controle de elevador e exibir uma mensagem temporária na tela do equipamento.
Requisição
{
"cmd": "opendoor",
"password": "xxx",
"enrollid": "1001",
"msg": "Bem-vindo"
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | Opcional — ID do usuário associado à abertura (utilizado em saídas Wiegand e registros de acesso) |
floor | number | Opcional — Número do andar a ser liberado em sistemas de controle de elevador |
msg | string | Opcional — Mensagem exibida na tela do dispositivo por aproximadamente 3 segundos |
Resposta
{
"ret": "opendoor",
"sn": "SN123456",
"result": true
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
ret | string | Nome do comando executado |
sn | string | Número de série do dispositivo |
result | bool | Resultado da operação (true para sucesso, false para falha) |
Observações
A mensagem informada em msg é exibida temporariamente no display do equipamento e não é armazenada.
A abertura da porta depende das configurações de controle de acesso do dispositivo.
7.6.2 setdevlock — Configurar Parâmetros de Controle de Acesso
Permite configurar os parâmetros de controle de acesso do dispositivo, incluindo tempos de abertura, sensores, alarmes, regras de acesso, configurações Wiegand e tabelas de horários.
Requisição
Todos os parâmetros são opcionais. Envie apenas aqueles que deseja alterar.
{
"cmd": "setdevlock",
"password": "xxx",
"opendelay": 5,
"doorsensor": 1,
"alarmdelay": 30,
"InputAlarm": 0,
"antpass": 0,
"interlock": 0,
"mutiopen": 0,
"tryalarm": 5,
"access_times": 0,
"punchtimes": 0,
"tamper": 0,
"wgformat": 26,
"wgoutput": 0,
"cardformat": 0,
"dayzone": [],
"weekzone": [],
"lockgroup": [],
"nopentime": [],
"visitortime": []
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
opendelay | number | Tempo de abertura da porta (segundos) |
doorsensor | number | Tipo do sensor de porta |
alarmdelay | number | Tempo para disparo do alarme (segundos) |
InputAlarm | number | Configuração da entrada de alarme |
antpass | number | Modo anti-passback |
interlock | number | Função de intertravamento |
mutiopen | number | Abertura mediante múltiplos usuários |
tryalarm | number | Quantidade de tentativas inválidas para disparo do alarme |
access_times | number | Limite de acessos |
punchtimes | number | Limite de marcações |
tamper | number | Configuração de alarme antiviolação |
wgformat | number | Formato Wiegand (26, 34, etc.) |
wgoutput | number | Modo de saída Wiegand |
cardformat | number | Formato do cartão |
dayzone | array | Configurações de horários diários |
weekzone | array | Configurações de horários semanais |
lockgroup | array | Grupos de acesso |
nopentime | array | Períodos de bloqueio de abertura |
visitortime | array | Horários permitidos para visitantes |
Resposta
{
"ret": "setdevlock",
"sn": "SN123456",
"result": true
}
7.6.3 getdevlock — Consultar Parâmetros de Controle de Acesso
Retorna todas as configurações de controle de acesso atualmente aplicadas ao dispositivo.
Requisição
{
"cmd": "getdevlock",
"password": "xxx"
}
Resposta
{
"ret": "getdevlock",
"sn": "SN123456",
"result": true,
"opendelay": 5,
"doorsensor": 1,
"alarmdelay": 30,
"InputAlarm": 0,
"antpass": 0,
"interlock": 0,
"mutiopen": 0,
"tryalarm": 5,
"access_times": 0,
"tamper": 0,
"wgformat": 26,
"wgoutput": 0,
"cardformat": 0,
"dayzone": [],
"weekzone": [],
"lockgroup": [],
"nopentime": [],
"visitortime": []
}
Campos da Resposta
Os campos retornados possuem os mesmos significados descritos no comando setdevlock.
7.6.4 getuserlock — Consultar Configurações de Acesso de um Usuário
Retorna as configurações de controle de acesso atribuídas a um usuário específico.
Requisição
{
"cmd": "getuserlock",
"password": "xxx",
"enrollid": "1001"
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | ID do usuário |
Resposta (usuário encontrado)
{
"ret": "getuserlock",
"sn": "SN123456",
"result": true,
"enrollid": "1001",
"birthday": "01-15",
"verifymode": 0,
"weekzone": 0,
"group": 0,
"access_times": 0,
"starttime": "2024-01-01 00:00:00",
"endtime": "2025-12-31 23:59:59"
}
Resposta (usuário não encontrado)
{
"ret": "getuserlock",
"sn": "SN123456",
"result": false,
"reason": 1,
"msg": "can not find the user",
"enrollid": "1001"
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string | ID do usuário |
birthday | string | Data de nascimento no formato MM-DD |
verifymode | number | Modo de verificação do usuário |
weekzone | number | ID da zona horária semanal |
group | number | ID do grupo de acesso |
access_times | number | Quantidade de acessos permitidos |
starttime | string | Data/hora inicial de validade |
endtime | string | Data/hora final de validade |
Códigos de Erro
| Código | Descrição |
|---|---|
1 | Usuário não encontrado |
7.6.5 setuserlock — Configurar Parâmetros de Acesso por Usuário (Lote)
Permite definir ou atualizar as configurações de controle de acesso de múltiplos usuários em uma única requisição.
Requisição
{
"cmd": "setuserlock",
"password": "xxx",
"count": 2,
"record": [
{
"enrollid": "1001",
"birthday": "01-15",
"verifymode": 0,
"weekzone": 0,
"group": 0,
"access_times": 0,
"starttime": "2024-01-01 00:00:00",
"endtime": "2025-12-31 23:59:59"
},
{
"enrollid": "1002",
"birthday": "06-20",
"verifymode": 1,
"weekzone": 1,
"group": 0,
"access_times": 5,
"starttime": "2024-01-01 00:00:00",
"endtime": "2025-12-31 23:59:59"
}
]
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
count | number | Quantidade de registros enviados |
record | array | Lista de configurações de acesso dos usuários |
record[].enrollid | string/number | ID do usuário |
record[].birthday | string | Data de nascimento no formato MM-DD |
record[].verifymode | number | Modo de verificação |
record[].weekzone | number | ID da zona horária semanal |
record[].group | number | ID do grupo de acesso |
record[].access_times | number | Quantidade máxima de acessos permitidos (0 = ilimitado) |
record[].starttime | string | Data/hora inicial de validade |
record[].endtime | string | Data/hora final de validade |
Resposta (Sucesso)
{
"ret": "setuserlock",
"sn": "SN123456",
"result": true
}
Resposta (Falha)
{
"ret": "setuserlock",
"sn": "SN123456",
"result": false,
"reason": 1,
"msg": "setuserlock fail"
}
Códigos de Erro
| Código | Descrição |
|---|---|
1 | Falha ao configurar os parâmetros de acesso dos usuários |
7.6.6 deleteuserlock — Remover Configurações de Acesso de um Usuário
Remove as configurações de controle de acesso associadas a um usuário específico.
Requisição
{
"cmd": "deleteuserlock",
"password": "xxx",
"enrollid": "1001"
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string/number | ID do usuário |
Resposta
{
"ret": "deleteuserlock",
"sn": "SN123456",
"result": true,
"enrollid": "1001"
}
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
enrollid | string | ID do usuário afetado pela operação |
7.6.7 cleanuserlock — Remover Todas as Configurações de Acesso dos Usuários
Remove todas as configurações de controle de acesso personalizadas associadas aos usuários cadastrados no dispositivo.
Requisição
{
"cmd": "cleanuserlock",
"password": "xxx"
}
Resposta
{
"ret": "cleanuserlock",
"sn": "SN123456",
"result": true
}
Observações
Apenas as regras de acesso associadas aos usuários são removidas.
Este comando remove as configurações individuais de acesso dos usuários.
Os usuários cadastrados não são excluídos.
Os dados biométricos, cartões e registros permanecem armazenados no dispositivo.