Protocolo Facial API WebService

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

ModoPortaDescrição
HTTP80 (padrão) ou personalizadaHTTP 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
}
CampoTipoObrigatórioDescrição
cmdstringSimNome do comando
passwordstringSim (exceto getlang)Senha de gerenciamento do dispositivo

4. Formato Comum de Resposta

{
"ret": "",
"sn": "",
"result": true/false
// ... dados específicos da resposta do comando
}
CampoTipoDescrição
retstringRetorna o nome do comando solicitado
snstringNúmero de série do dispositivo
resultboolIndica se a operação foi concluída com sucesso
reasonnumberCódigo do motivo da falha (somente em caso de erro)
msgstringDescrição textual da falha (somente em caso de erro)

5. Códigos de Erro

reasonDescrição
1Usuário não encontrado / Erro no formato do parâmetro
2Senha incorreta / Senha vazia
3Dispositivo ocupado (ex.: cadastro em andamento)
5Nenhum rosto detectado na imagem
6Múltiplos rostos detectados na imagem
7Resolução da imagem muito grande
8Área do rosto muito grande
9Área do rosto muito pequena
10Qualidade da imagem muito baixa
11Posição do rosto muito fora do centro
12Rosto duplicado (já registrado para outro usuário)

6. Endpoints HTTP

EndpointMétodoDescrição
/apiPOSTEndpoint principal da API JSON
/api/firmware/uploadPOSTUpload de firmware em partes (chunked upload)
/download/reportGETDownload de relatório resumido (.xls)
/download/rawrecordGETDownload de registros brutos de ponto (.xls)
/photos/GETAcesso às fotos de cadastro dos usuários
/logphotos/GETAcesso às fotos de captura dos registros
/GETServidor 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"
}
CampoTipoDescrição
langstringNome 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

CampoTipoDescrição
modelnamestringNome do modelo do dispositivo
manufacturerstringFabricante
deviceidnumberID do dispositivo
usersizenumberCapacidade máxima de usuários
facesizenumberCapacidade máxima de faces
fpsizenumberCapacidade máxima de digitais
palmsizenumberCapacidade máxima de palmas
cardsizenumberCapacidade máxima de cartões
pwdsizenumberCapacidade máxima de senhas
logsizenumberCapacidade máxima de logs
usedusernumberQuantidade atual de usuários cadastrados
usedfacenumberQuantidade atual de faces cadastradas
usedfpnumberQuantidade atual de digitais cadastradas
usedpalmnumberQuantidade atual de palmas cadastradas
usedcardnumberQuantidade atual de cartões cadastrados
usedpwdnumberQuantidade atual de senhas cadastradas
usedlognumberQuantidade total de logs
usednewlognumberQuantidade de novos logs
usedrtlognumberQuantidade de logs em tempo real
netinusenumberRede em uso (0=nenhuma, 1=cabeada, 2=Wi-Fi, 3=4G)
usb4gnumberMódulo USB 4G presente (0=não, 1=sim)
fpalgostringVersão do algoritmo biométrico
firmwarestringVersão do firmware
timestringData e hora atual do dispositivo
intercomnumberSuporte a interfone (0=não, 1=sim)
elevator_controlnumberControle de elevador habilitado
floorsnumberQuantidade total de andares
base_floornumberAndar base
have_g_floornumberPossui andar térreo (G)
acces_stimesnumberQuantidade de acessos
charidnumberID de caracteres
useosdpnumberUso do protocolo OSDP
facetemplatenumberModo do template facial
usequestionnumberQuestionário habilitado
onlinedebugnumberDepuração online habilitada
dislanguagenumberMáscara de idiomas desabilitados
curipstringEndereço IP atual
ntpnumberNTP habilitado
timezonestringFuso horário
macstringEndereç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

CampoTipoDescrição
deviceidnumberID do dispositivo
languagenumberIdioma
managersnumberNúmero de administradores
verifymodenumberModo de verificação
volumenumberVolume
video_claritynumberQualidade do vídeo
micvolumenumberVolume do microfone
intercomvolumenumberVolume do interfone
date_formatnumberFormato da data
label_stylenumberEstilo de exibição
keyboardnumberConfiguração do teclado
usegpsnumberUtilizar GPS
time_formatnumberFormato da hora
use_dstnumberUtilizar horário de verão
dst_startnumberInício do horário de verão
dst_endnumberFim do horário de verão
show_avatarnumberExibir avatar
show_batterynumberExibir bateria
use_qrcodenumberHabilitar QR Code
screensavertimenumberTempo do protetor de tela (segundos)
showresulttimenumberTempo de exibição do resultado da verificação
sleeptimenumberTempo para entrar em repouso
screensaver_wakeupnumberModo de despertar do protetor de tela
stranger_photonumberFoto de desconhecidos
stranger_locknumberBloqueio de desconhecidos
verifyfail_hintnumberAviso de falha de verificação
userid_formatnumberFormato do ID do usuário
rfid_free_regnumberCadastro RFID livre
rfid_auto_regnumberCadastro automático RFID
shift_weekend_otnumberHora extra em fim de semana
rfid_module_typenumberTipo do módulo RFID
filllightnumberLuz de preenchimento
filllight_periodnumberPeríodo da luz de preenchimento
accept_dosenumberDose aceita
face_double_checknumberDupla verificação facial
glog_warningnumberLimite de alerta de logs de acesso
slog_warningnumberLimite de alerta de logs do sistema
reverifytimenumberIntervalo para nova verificação
use_logphotonumberUtilizar foto nos logs
tts_voicenumberVoz TTS
online_debugnumberDepuração online
hide_otanumberOcultar atualização OTA
multifacesnumberReconhecimento múltiplo de faces
disable_menunumberDesabilitar menu
server_keypadnumberTeclado do servidor
keypad_pwdnumberSenha do teclado
reverify_nolocknumberReverificação sem bloqueio
default_shiftnumberTurno padrão
saturday_attendnumberPresença no sábado
sunday_attendnumberPresença no domingo
allow_latetimenumberTempo permitido de atraso (minutos)
allow_earlytimenumberTempo permitido para saída antecipada
auto_signnumberAssinatura automática
shift_weekendnumberTurno de fim de semana
excel_passwordstringSenha de exportação Excel
nosavelognumberNão salvar logs
hide_privacynumberProteção de privacidade
reboottime1numberHorário programado de reinicialização 1
reboottime2numberHorário programado de reinicialização 2
reboottime3numberHorário programado de reinicialização 3
reg_card_1numberCartão de registro 1
reg_card_2numberCartão de registro 2
reg_card_3numberCartão de registro 3
selfchecklognumberLog de auto verificação
questionnairenumberQuestionário
questionnaire_cardnumberCartão de questionário
questionnaire_switch_cardnumberAlternância de cartão do questionário
event_schedulenumberAgenda de eventos 0
event_schedule1numberAgenda de eventos 1
event_schedule2numberAgenda de eventos 2
event_schedule3numberAgenda de eventos 3
event_schedule4numberAgenda de eventos 4
event_schedule5numberAgenda de eventos 5
event_schedule6numberAgenda de eventos 6
event_schedule7numberAgenda de eventos 7
event_schedule8numberAgenda de eventos 8
bellcountnumberQuantidade de campainhas
belloutputnumberSaída da campainha
ring_stylenumberEstilo do toque

Configurações Biométricas

CampoTipoDescrição
live_detectnumberDetecção de vivacidade
live_levelnumberNível de detecção de vivacidade
fcmatch_levelnumberNível de correspondência facial
identify_distancenumberDistância de identificação
fpmatch_levelnumberNível de correspondência de impressão digital
palm_vein_levelnumberNível da veia da palma
palm_det_levelnumberNível de detecção da palma
fps_perusernumberImpressões digitais por usuário
disable_facenumberDesabilitar reconhecimento facial
enable_palmnumberHabilitar reconhecimento de palma

Configurações Seriais e de Rede

CampoTipoDescrição
usedcomnumberPorta serial utilizada
combauratenumberBaud rate da serial
netipaddressIPEndereço IP Ethernet
netmaskIPMáscara de sub-rede
netgatewayIPGateway
use_eth_dhcpnumberUtilizar DHCP Ethernet
commpasswordnumberSenha de comunicação
netportnumnumberPorta de rede
rs485_funnumberFunção RS485
use_wlannumberUtilizar Wi-Fi
use_wlan_dhcpnumberUtilizar DHCP Wi-Fi
wlan_ip_addressIPIP Wi-Fi
wlan_net_maskIPMáscara Wi-Fi
wlan_gatewayIPGateway Wi-Fi
wlan_ssidstringSSID Wi-Fi
wlan_pwdstringSenha Wi-Fi
gprs_apnstringAPN GPRS
gps_durationnumberIntervalo de relatório GPS
gprs_ipaddressnumberIP GPRS
gprs_macaddressnumberMAC GPRS

Configurações do Servidor

CampoTipoDescrição
serveripIPEndereço IP do servidor
serverportnumberPorta do servidor
webserverportnumberPorta do WebServer
server_response_timenumberTempo limite de resposta do servidor
user_add_enablenumberPermitir adicionar usuários
use_bsnumberUtilizar serviço backend
use_webservernumberUtilizar WebServer
bs_domain_namestringDomínio do serviço backend
use_domain_namenumberUtilizar nome de domínio
dns_server_ipIPIP do servidor DNS
server_dns_namestringNome DNS do servidor
server_verifynumberModo de verificação do servidor
server_verify_timeoutnumberTimeout de verificação do servidor
use_ntpnumberUtilizar NTP
ntp_timezonenumberFuso 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
}
CampoTipoObrigatórioDescrição
nowtimenumberNãoTimestamp Unix (ms) para sincronização de horário
Outros camposNãoQualquer 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
}
CampoTipoDescrição
usersizenumberCapacidade máxima de usuários
facesizenumberCapacidade máxima de faces
avatarsizenumberCapacidade máxima de avatares
fpsizenumberCapacidade máxima de impressões digitais
palmsizenumberCapacidade máxima de palmas
cardsizenumberCapacidade máxima de cartões
pwdsizenumberCapacidade máxima de senhas
logsizenumberCapacidade máxima de logs
usedusernumberUsuários atualmente cadastrados
usedfacenumberFaces atualmente cadastradas
usedavatarnumberAvatares atualmente cadastrados
usedfpnumberImpressões digitais cadastradas
usedpalmnumberPalmas cadastradas
usedcardnumberCartões cadastrados
usedpwdnumberSenhas cadastradas
usedlognumberTotal de logs
usednewlognumberNovos logs não lidos
usedrtlognumberLogs 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
}
CampoTipoDescrição
stnnumber1 = 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

CampoTipoDescrição
countnumberQuantidade total de usuários
tonumberQuantidade de registros retornados (0 se não houver mais dados)
record[]arrayLista de usuários (máximo de 50 por requisição)

Campos de record[]

CampoTipoDescrição
record[].idstringID do usuário
record[].namestringNome do usuário
record[].departmentstringDepartamento
record[].shiftnumberID do turno
record[].adminnumberPermissão administrativa (0=usuário, 1=administrador)
record[].fingerprintnumberQuantidade de digitais cadastradas
record[].palmnumberQuantidade de palmas cadastradas
record[].facenumberQuantidade de faces cadastradas
record[].passwordnumberIndicador de senha cadastrada
record[].cardnumberNúmero do cartão
record[].weekzonenumberID da zona semanal
record[].groupnumberID do grupo
record[].access_timesnumberQuantidade de acessos permitidos
record[].verifymodenumberModo de verificação
record[].birthdaystringData de nascimento (MM-DD)
record[].starttimestringData/hora inicial de validade
record[].endtimestringData/hora final de validade
record[].photourlstringURL da foto do usuário
record[].userprofilestringPerfil 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"
}
CampoTipoDescrição
enrollidstring/numberID do usuário a ser verificado

Resposta

{
"ret": "checkuserid",
"sn": "SN123456",
"result": true,
"exists": true
}
CampoTipoDescrição
existsboolIndica 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
}
CampoTipoDescrição
enrollidstring/numberID do usuário ou ID alternativo
backupnumnumberOpcional — 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

CampoTipoDescrição
enrollidstringID do usuário
namestringNome do usuário
departmentstringDepartamento
adminnumberPermissão administrativa
pwdnumberIndicador de senha
cardnumberID do cartão
fpflagnumberMáscara de digitais cadastradas
fpcntnumberQuantidade de digitais cadastradas
palmflagnumberMáscara de palmas cadastradas
palmcntnumberQuantidade de palmas cadastradas
faceflagnumberIndicador facial
enablenumberUsuário habilitado
birthdaystringData de nascimento (MM-DD)
shiftidnumberID do turno
verifymodenumberModo de verificação
zoneidnumberID da zona de horário
groupidnumberID do grupo
access_timesnumberQuantidade de acessos permitidos
postidnumberID do departamento/cargo
starttimestringData/hora inicial de validade
endtimestringData/hora final de validade
userprofilestringPerfil do usuário
backupnumnumberbackupnum solicitado
recordstringDados biométricos em Base64
photourlstringURL 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

CampoTipoDescrição
enrollidstring/numberID do usuário
namestringNome completo
adminnumberPermissão (0=usuário, 1=admin)
pwdnumberSenha numérica
cardnumber/stringNúmero do cartão RFID
departmentstringDepartamento
postidnumberID do cargo/departamento
birthdaystringData de nascimento (MM-DD)
starttimestringData/hora inicial
endtimestringData/hora final
verifymodenumberModo de verificação
shiftidnumberID do turno
zoneidnumberID da zona de horário
groupidnumberID do grupo
access_timesnumberQuantidade permitida de acessos
enablenumberUsuário habilitado (0/1)
facestringImagem facial em Base64
backupnumnumberÍndice biométrico
recordstringTemplate biométrico em Base64
userprofilestringPerfil 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

reasonDescrição
1Arquivo de imagem muito grande
5Nenhum rosto detectado
6Múltiplos rostos detectados
7Dimensões da imagem muito grandes
8Região do rosto muito grande
9Região do rosto muito pequena
10Qualidade da imagem muito baixa
11Rosto muito fora do centro
12Rosto duplicado
7.2.5 deleteuser — Excluir Usuário ou Biométricos

Requisição:

{
"cmd": "deleteuser",
"password": "xxx",
"enrollid": "1001",
"backupnum": 12
}
CampoTipoDescrição
enrollidstring/numberID do usuário
backupnumnumberTipo da ação

Valores de backupnum

backupnumAção
12 ou 13Excluir usuário completo
0-9Excluir digital do índice especificado
10Limpar senha
11Limpar cartão
40/41Excluir palma esquerda/direita
50 ou 51Excluir face

Resposta:

{
"ret": "deleteuser",
"sn": "SN123456",
"result": true,
"backupnum": 12,
"enrollid": "1001"
}
CampoTipoDescrição
backupnumnumberValor retornado do backupnum
enrollidstringID do usuário
7.2.6 deleteuserface — Excluir Face do Usuário

Requisição:

{
"cmd": "deleteuserface",
"password": "xxx",
"enrollid": "1001"
}
CampoTipoDescrição
enrollidstring/numberID 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"]
}
CampoTipoDescrição
listarrayLista 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
}
CampoTipoDescrição
enrollidstring/numberID do usuário
enflagnumber1=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

CampoTipoDescrição
cancelboolDefina como true para cancelar o cadastro em andamento
enrollidstring/numberID do usuário
backupnumnumberTipo de cadastro biométrico
adminnumberDefine se o usuário será administrador
flagnumberFlags de configuração
namestringNome 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

reasonDescrição
1ID do usuário vazio
2backupnum inválido
3Dispositivo 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

CampoTipoDescrição
statusnumberCódigo do status do cadastro
msgstringMensagem de status (limpa após leitura)
imagestringImagem de pré-visualização em Base64

Códigos de Status

statusDescrição
-1Inativo / cancelado
0Cadastro em andamento
1Cadastro realizado com sucesso
outro valorFalha 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

CampoTipoDescrição
indexnumberPosição inicial (0 = iniciar nova consulta)
enrollidstring/numberOpcional — filtrar por usuário específico
fromstringOpcional — data inicial no formato YYMMDD
tostringOpcional — 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

CampoTipoDescrição
countnumberQuantidade total de logs encontrados
fromnumberÍndice inicial dos registros retornados
tonumberÍndice final dos registros retornados
record[]arrayLista de registros de log

Campos de record[]

CampoTipoDescrição
record[].enrollidstringID do usuário
record[].namestringNome do usuário
record[].timestringData e hora do registro
record[].modenumberMétodo de verificação (1=face, 2=digital, 3=cartão, 4=senha, etc.)
record[].inoutnumberDireção (1=entrada, 0=saída)
record[].eventnumberCódigo do evento
record[].notestring/objectObservação adicional
record[].photourlstringURL 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

CampoTipoDescrição
indexnumberPosiçã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

CampoTipoDescrição
countnumberQuantidade total de logs em tempo real na fila
fromnumberÍndice inicial retornado
tonumberÍndice final retornado
record[]arrayLista de registros de log

Campos de record[]

Os campos são os mesmos utilizados no comando getlog.

CampoTipoDescrição
record[].enrollidstringID do usuário
record[].namestringNome do usuário
record[].timestringData e hora do registro
record[].modenumberMétodo de verificação
record[].inoutnumberDireção (1=entrada, 0=saída)
record[].eventnumberCódigo do evento
record[].notestring/objectObservaçã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 index até:
    • 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

CampoTipoDescrição
recordsarrayLista de logs a serem marcados como sincronizados
records[].idstring/numberID do usuário
records[].eventnumberTipo de evento
records[].modenumberMétodo de verificação
records[].timestringData 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

CampoTipoDescrição
timestringHorá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

CampoTipoDescrição
cloudtimestringData/hora no formato YYYY-MM-DD HH:MM:SS
nowtimenumberTimestamp Unix em milissegundos

Utilize apenas um dos campos: cloudtime ou nowtime.


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:

reasonDescrição
1Data/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

CampoTipoDescrição
enrollidstring/numberOpcional — ID do usuário associado à abertura (utilizado em saídas Wiegand e registros de acesso)
floornumberOpcional — Número do andar a ser liberado em sistemas de controle de elevador
msgstringOpcional — Mensagem exibida na tela do dispositivo por aproximadamente 3 segundos

Resposta

{
"ret": "opendoor",
"sn": "SN123456",
"result": true
}

Campos da Resposta

CampoTipoDescrição
retstringNome do comando executado
snstringNúmero de série do dispositivo
resultboolResultado 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

CampoTipoDescrição
opendelaynumberTempo de abertura da porta (segundos)
doorsensornumberTipo do sensor de porta
alarmdelaynumberTempo para disparo do alarme (segundos)
InputAlarmnumberConfiguração da entrada de alarme
antpassnumberModo anti-passback
interlocknumberFunção de intertravamento
mutiopennumberAbertura mediante múltiplos usuários
tryalarmnumberQuantidade de tentativas inválidas para disparo do alarme
access_timesnumberLimite de acessos
punchtimesnumberLimite de marcações
tampernumberConfiguração de alarme antiviolação
wgformatnumberFormato Wiegand (26, 34, etc.)
wgoutputnumberModo de saída Wiegand
cardformatnumberFormato do cartão
dayzonearrayConfigurações de horários diários
weekzonearrayConfigurações de horários semanais
lockgrouparrayGrupos de acesso
nopentimearrayPeríodos de bloqueio de abertura
visitortimearrayHorá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

CampoTipoDescrição
enrollidstring/numberID 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

CampoTipoDescrição
enrollidstringID do usuário
birthdaystringData de nascimento no formato MM-DD
verifymodenumberModo de verificação do usuário
weekzonenumberID da zona horária semanal
groupnumberID do grupo de acesso
access_timesnumberQuantidade de acessos permitidos
starttimestringData/hora inicial de validade
endtimestringData/hora final de validade

Códigos de Erro

CódigoDescrição
1Usuá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

CampoTipoDescrição
countnumberQuantidade de registros enviados
recordarrayLista de configurações de acesso dos usuários
record[].enrollidstring/numberID do usuário
record[].birthdaystringData de nascimento no formato MM-DD
record[].verifymodenumberModo de verificação
record[].weekzonenumberID da zona horária semanal
record[].groupnumberID do grupo de acesso
record[].access_timesnumberQuantidade máxima de acessos permitidos (0 = ilimitado)
record[].starttimestringData/hora inicial de validade
record[].endtimestringData/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ódigoDescrição
1Falha 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

CampoTipoDescrição
enrollidstring/numberID do usuário

Resposta

{
"ret": "deleteuserlock",
"sn": "SN123456",
"result": true,
"enrollid": "1001"
}

Campos da Resposta

CampoTipoDescrição
enrollidstringID 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.

Esse artigo foi útil?

Artigos relacionados