IntroduçãoIntrodução à API Esta é a documentação da API do REP iDClass. Para conferir nossa Coleção do Postman, com exemplos de todas as requisições apresentadas aqui, acesse este link. *** ATENÇÃO! ***

Algumas chamadas da API foram adaptadas para compatibilidade com a Portaria 671 e agora recebem um parâmetro pela query string chamado "mode". Se esse valor for 671, as chamadas consideram as mudanças da Portaria 671. Para qualquer outro valor ou na ausência do parâmetro, é levado em consideração o funcionamento anterior do REP.

Esta API é composta de Web Services RESTful. Cada comando é uma chamada HTTPS POST com Content-Type: application/json e possui uma URL própria. Seus parâmetros e seus retornos são passados preferencialmente por JSON, exceto em menção contrária. Como exemplo, o comando login pode possuir a URL: https://192.168.0.129/login.fcgi e os seguintes parâmetros: { login: 'admin', password: 'admin' } *** ATENÇÃO! ***

Seguindo as exigências do INMETRO, o relógio comunica-se usando SSL (HTTPS). Como o relógio usa certificados auto-assinados, este fato pode gerar alguns problemas, como erros de comunicação inesperados. No final do documento há instruções de como evitar esse problema em algumas linguagens.

Todos os comandos requerem uma sessão válida, exceto session_is_valid e login. O corpo da requisição deve possuir a codificação UTF-8. Caso os caracteres enviados não possuam nenhum caractere especial (ASCII), o corpo da requisição não precisa ser codificado.Por padrão, a codificação utilizada por sistemas Windows é a Windows-1252 (também conhecida como CP-1252). Verificar como utilizar a codificação correta.
Valores Padrão
A porta de comunicação é 443. O usuário é "admin". A senha é "admin".
Executando os Exemplos
Os exemplos dessa documentação são escritos em JavaScript, utilizando a biblioteca jQuery. Para testá-los, acesse o endereço IP do equipamento em um navegador web e use as ferramentas do desenvolvedor (developer tools) deste para realizar requisições. Todos os exemplos fornecidos podem ser verificados copiando seus códigos e colando no console das ferramentas de desenvolvimento. Devido ao fato das requisições virem de uma fonte diferente do relógio, a maioria dos browsers modernos bloqueia a requisição (CORS). No Google Chrome, isso pode ser ignorado executando-o com as flags --disable-web-security --ignore-certificate-errors
Um exemplo completo de um comando
No código abaixo há um primeiro exemplo funcional para testar a conexão com o equipamento. $.ajax({ url: "/login.fcgi", type: 'POST', contentType: 'application/json', data: JSON.stringify({ login: 'admin', password: 'admin' }), success: function(data) { session = data.session; } }); Para mais detalhes sobre o login, favor verificar a sua documentação aqui.
Executando os Exemplos em Outras Linguagens
Seguem abaixo alguns exemplos que ilustram como a API pode ser usada em outras linguagens de programação. Nesses exemplos, o endereço 192.168.0.129, quando aparecer, representa o endereço IP do equipamento. Para conexões com o relógio em .NET e Delphi, deve-se adicionar o arquivo de configuração a seguir. Ex.: Se o executável for App.exe, o arquivo de configurações deve ser App.exe.config Atenção: a opção HTTP "Expect: 100- continue" deve estar desabilitada para as chamadas funcionarem. O único dos exemplos abaixo que o faz explicitamente é o em C#. Por favor, verifique a necessidade de fazê-lo em sua linguagem de preferência.procedure TFrmTTWebserviceTester.Button1Click(Sender: TObject); var lJSO : ISuperObject; lRequest: TStringStream; lResponse: String; begin lJSO := SO('{"login": "admin", "password": "admin"}'); lRequest := TStringStream.Create(lJSO.AsString, TEncoding.UTF8); try IdHTTP.Request.ContentType := 'application/json'; IdHTTP.Request.Charset := 'utf-8'; try lResponse := IdHTTP.Post('https://192.168.0.129/login.fcgi', lRequest); ShowMessage(lResponse); except on E: Exception do ShowMessage('Error on request:'#13#10 + E.Message); end; finally lRequest.Free; end; lJSO := nil; end;Esse exemplo em Delphi utiliza a biblioteca de código aberto Indy.System.Net.ServicePointManager.Expect100Continue = false; try { var request = (HttpWebRequest)WebRequest.Create("https://192.168.0.129/login.fcgi"); request.ContentType = "application/json"; request.Method = "POST"; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write("{\"login\":\"admin\",\"password\":\"admin\"}"); } var response = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(response.GetResponseStream())) { Console.WriteLine(streamReader.ReadToEnd()); } } catch (WebException e) { using (WebResponse response = e.Response) { HttpWebResponse httpResponse = (HttpWebResponse)response; Console.WriteLine("Error code: {0}", httpResponse.StatusCode); using (Stream data = response.GetResponseStream()) using (var reader = new StreamReader(data)) { string text = reader.ReadToEnd(); Console.WriteLine(text); } } }public String Conecta_iDClass(String session) throws Exception { // método utilizado para ignorar certificado SSL Ignore_SSL(); try { URL url = new URL("https://192.168.2.185:443/login.fcgi"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-type", "application/json"); conn.setDoInput(true); conn.setDoOutput(true); OutputStream os = conn.getOutputStream(); os.write("{\"login\":\"admin\",\"password\":\"admin\"}".getBytes()); if (conn.getResponseCode() != 200) { BufferedReader br = new BufferedReader(new InputStreamReader(conn.getErrorStream())); String output, result = ""; System.out.println("Não conectado"); while ((output = br.readLine()) != null) { System.out.println(result += output); } throw new RuntimeException("Falha na conexão: " + result); } else { BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String output; System.out.println("Conectado, código da sessão: \n"); while ((output = br.readLine()) != null) { session = output; System.out.println(output); } } } catch (Exception e) { e.printStackTrace(); } return session; } // ignorar certificado SSL public void Ignore_SSL() throws Exception { // fazendo uma requisição SSL sem registrar o certificado na JVM. final X509TrustManager ignore = new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } // "valida" o certificado public void checkServerTrusted(X509Certificate[] certs, String authType) throws java.security.cert.CertificateException { return; } public void checkClientTrusted(X509Certificate[] certs, String authType) throws java.security.cert.CertificateException { return; } }; // cria socket ssl SSLContext _ssl = SSLContext.getInstance("SSL"); _ssl.init(null, new TrustManager[]{ignore}, null); // ativa o socket para a requisicao HttpsURLConnection.setDefaultSSLSocketFactory(_ssl.getSocketFactory()); final HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String urlHostName, SSLSession session) { return true; } }; HttpsURLConnection.setDefaultHostnameVerifier(hv); }
LoginComando para criar uma sessãologin Cria a sessão, que é necessária para todos os outros comandos, exceto session_is_valid. O método HTTP usado para o envio dos dados é o POST. loginstringO valor padrão é admin.passwordstringO valor padrão é admin.sessionstringCódigo da sessão iniciada.$.ajax({ url: "/login.fcgi", type: 'POST', contentType: 'application/json', data: JSON.stringify({ login: 'admin', password: 'admin' }), success: function(data) { session = data.session; } });
Validade da sessãoComando para verificar a validade de uma sessãosession_is_valid Indica se a sessão é válida. Essa chamada não possui parâmetros. session_is_validbooleanoRetorna 'true' se a sessão é válida e 'false' se a sessão estiver inválida.$.ajax({ url: "/session_is_valid.fcgi?session=" + session, type: 'POST', contentType: 'application/json' });
Alterar usuário e/ou senha de loginComando para alterar o usuário e/ou a senha de loginchange_login Altera o usuário e/ou a senha utilizados para o login no equipamento. loginstring Nome do usuário a ser usado para o login no equipamento. passwordstring Senha do usuário a ser usada para o login no equipamento. Deve ser um texto simples, sem Hash. confirmationstring Confirmação da senha do usuário. Deve possuir o mesmo valor que o parâmetro password. $.ajax({ url: "/change_login.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ login: 'WalterWhite', password: 'Heisenberg', confirmation: 'Heisenberg' }); });
Remover AdministradoresRemove todos os administradores do equipamentoremove_admins Remove todos os administradores do equipamento. Obs: Esse método não tem retorno. $.ajax({ url: "/remove_admins.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
LogoutComando para finalizar uma sessãologout Finaliza a sessão. O método HTTP usado para o envio dos dados é o POST. Obs: Essa chamada não retorna nada, somente invalida a sessão. $.ajax({ url: "/logout.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
CadastrarCadastrar usuáriosadd_users Adiciona usuários. O método HTTP usado é o POST. usersArray de objetos Lista de objetos do tipo usuário, contendo os parâmetros listados abaixo: pisinteiro PIS do funcionário. Este parâmetro é o padrão para Portarias anteriores. Para utilizá-lo no modelo 671, basta passar um valor de modo diferente de 671 na query_string, através do parâmetro mode ou não informar modo algum (ver exemplo). cpfinteiro CPF do funcionário. Este parâmetro só estará acessível quando o REP for um modelo homologado com a Portaria 671 e caso o usuário passe explicitamente o valor 671 para o parâmetro mode na query_string (ver exemplo). namestring Nome do funcionário. registrationinteiro Matrícula do funcionário. rfidinteiro Valor do cartão de proximidade. barsstring Valor do cartão de código de barras. codeinteiro Código do funcionário utilizado com senha para emitir comprovante. passwordstring String com senha do funcionário contendo apenas valores numéricos. adminbooleano Se true, o usuário terá privilégios de administrador. templatesArray de strings Lista de templates biométricos a serem adicionados ao usuário, encodados em base64. $.ajax({ url: "/add_users.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ users:[{ admin:true, bars:'1345674', code:1122334, name:'MauroL', password:'123', pis:2233445548, rfid:0, templates: ['UHUSn+kfauhas34uh/fasiuj...dsa', 'UHUqwefda+/sa7ddsiz2...3r3'] }] }) });$.ajax({ url: "/add_users.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ users:[{ admin:true, bars:'1345674', code:1122334, name:'MauroL', password:'123', cpf:2233445548, rfid:0, templates: ['UHUSn+kfauhas34uh/fasiuj...dsa', 'UHUqwefda+/sa7ddsiz2...3r3'] }] }) });
Contar usuáriosQuantidade de usuários cadastradoscount_users Retorna a quantidade de usuários cadastrados. O método HTTP usado é o POST. countinteiro Retorna a quantidade de usuários cadastrados no REP. $.ajax({ url: "/count_users.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
ListarLista usuários - máximo de 100.load_users Carrega todos os dados do tipo especificado. O método HTTP usado é o POST.

Deve ser passado o parâmetro user_pis/user_cpf OU limit e offset.
users_pis (opcional)Array de inteiros de 64 bits Lista de PIS de usuários a serem listados (máximo de 100). Este parâmetro é o padrão para Portarias anteriores. Para utilizá-lo no modelo 671, basta passar um valor de modo diferente de 671 na query_string, através do parâmetro mode ou não informar modo algum (ver exemplo). users_cpf (opcional)Array de inteiros de 64 bits Lista de CPFs de usuários a serem listados (máximo de 100). Este parâmetro só estará acessível quando o REP for um modelo homologado com a Portaria 671 e caso o usuário passe explicitamente o valor 671 para o parâmetro mode na query_string (ver exemplo). limit (opcional)inteiro O número máximo de usuário a adquirir (máximo de 100). offset (opcional)inteiro A partir de qual usuário deve-se listar. Exemplo: se offset = 200, começará a listar a partir do usuário 200. templates (opcional)booleano Se true, retorna templates biométricos. countinteiroRetorna a quantidade de usuários.usersArray de objetos Lista de objetos do tipo usuário, contendo os parâmetros listados abaixo: pisinteiro PIS do funcionário. Este parâmetro é o padrão para Portarias anteriores. Para utilizá-lo no modelo 671, basta passar um valor de modo diferente de 671 na query_string, através do parâmetro mode ou não informar modo algum (ver exemplo). cpfinteiro CPF do funcionário. Este parâmetro só estará acessível quando o REP for um modelo homologado com a Portaria 671 e caso o usuário passe explicitamente o valor 671 para o parâmetro mode na query_string (ver exemplo). namestring Nome do funcionário. rfidinteiro Valor do cartão de proximidade. barsstring Valor do cartão de código de barras. codeinteiro Código do funcionário utilizado com senha para emitir comprovante. passwordstring String com senha do funcionário contendo apenas valores numéricos. adminbooleano Se true, o usuário terá privilégios de administrador. templatesArray de strings Lista de templates biométricos a serem adicionados ao usuário, encodados em base64.
$.ajax({ url: "/load_users.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ limit:100, offset:300 }) }); $.ajax({ url: "/load_users.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ users_pis: [54654545878, 8976546546545] }) }); $.ajax({ url: "/load_users.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ limit:100, offset:300 }) }); $.ajax({ url: "/load_users.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ users_cpf: [54654545878, 8976546546545] }) });
RemoverRemover usuários especificando o CPF (modelo 671) ou PIS (outros modelos)remove_users Remove o usuário, esse método não tem retorno. O método HTTP usado é o POST. usersArray de inteiros de 64 bits Lista de PIS ou de CPFs dos usuários a serem removidos. Por padrão, utiliza-se o PIS. Se o equipamento for homologado com a Portaria 671 e o valor de mode for 671 na query_string (ver exemplo), passa-se a usar o CPF como parâmetro. $.ajax({ url: "/remove_users.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ users:[223344554, 17033259504, 12312314] }) });
AtualizarAtualiza cadastro de usuáriosupdate_users Atualiza usuários de PIS ou CPF correspondente, esse método não tem retorno. O método HTTP usado é o POST. usersArray de objetos Lista de objetos do tipo usuário, contendo os parâmetros listados abaixo: pisinteiro PIS do funcionário a ser modificado. Este parâmetro é o padrão para Portarias anteriores. Para utilizá-lo no modelo 671, basta passar um valor de modo diferente de 671 na query_string, através do parâmetro mode ou não informar modo algum (ver exemplo). cpfinteiro CPF do funcionário a ser modificado. Este parâmetro estará disponível quando o REP for um modelo homologado com a Portaria 671 e caso o usuário passe explicitamente o valor 671 para o parâmetro mode na query_string (ver exemplo). namestring Nome do funcionário. rfidinteiro Valor do cartão de proximidade. barsstring Valor do cartão de código de barras. codeinteiro Código do funcionário utilizado com senha para emitir comprovante. passwordstring String com senha do funcionário contendo apenas valores numéricos. adminbooleano Se true, o usuário terá privilégios de administrador. remove_templatesbooleano Se true, remove todos os templates biométricos do usuário. templatesArray de strings Lista de templates biométricos a serem adicionados ao usuário, encodados em base64. $.ajax({ url: "/update_users.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ users:[{ pis: 2233445548, name: 'Jesse Pinkman', bars: '1345674', code: 1122334, password: '123', rfid: 1007524, admin: true }] }) }); $.ajax({ url: "/update_users.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ users:[{ cpf: 2233445548, name: 'Jesse Pinkman', bars: '1345674', code: 1122334, password: '123', rfid: 1007524, admin: true }] }) });$.ajax({ url: "/update_users.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ users:[{ pis:225000000004, remove_templates:true }] }) });
Importar usuáriosImportar funcionários, caso eles não existamimport_users_csv Verifica se o usuário está cadastrado - caso ele não esteja, adiciona. O corpo da requisição é um binário contendo os dados dos usuários. O campo Content-Length do cabeçalho representa o tamanho do corpo da requisição em número decimal de OCTETs. O método HTTP usado é o POST. imported_users_numinteiro Indica a quantidade de usuários que foram importados. imported_templates_numinteiro Indica a quantidade de templates que foram importados. error_in_rowsArray de Inteiros Indica em quais linhas ocorreu erros. $.ajax({ url: "/import_users_csv.fcgi?session=" + session, type: 'POST', contentType: 'application/octet-stream', contentLength: quantidade_de_bytes, data: arquivo_csv });$.ajax({ url: "/import_users_csv.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/octet-stream', contentLength: quantidade_de_bytes, data: arquivo_csv });
Exportar os usuáriosExporta todos os usuários que estão na base de dados do REP iDClassexport_users_csv Exporta todos os usuários que estão na base de dados do REP iDClass. O método HTTP usado é o POST. Esse método retorna os dados dos usuários organizados da seguinte forma: pis (ou cpf);nome;administrador;matricula;rfid;codigo;senha;barras;digitais. usersArray de objetos Lista de objetos do tipo usuário, contendo os parâmetros listados abaixo: pisinteiro PIS do funcionário. Este parâmetro é o padrão para Portarias anteriores. Para utilizá-lo no modelo 671, basta passar um valor de modo diferente de 671 na query_string, através do parâmetro mode ou não informar modo algum (ver exemplo). cpfinteiro CPF do funcionário. Este parâmetro só estará acessível quando o REP for um modelo homologado com a Portaria 671 e caso o usuário passe explicitamente o valor 671 para o parâmetro mode na query_string (ver exemplo). namestring Nome do funcionário. rfidinteiro Valor do cartão de proximidade. barsstring Valor do cartão de código de barras. codeinteiro Código do funcionário utilizado com senha para emitir comprovante. passwordstring String com senha do funcionário contendo apenas valores numéricos. adminbooleano Se true, o usuário terá privilégios de administrador. templatesArray de strings Lista de templates biométricos a serem adicionados ao usuário, encodados em base64. $.ajax({ url: "/export_users_csv.fcgi?session=" + session, type: 'POST', contentType: 'application/json' });$.ajax({ url: "/export_users_csv.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json' });
CadastrarCadastra empregadoredit_company Edita o empregador do REP. O método HTTP usado é o POST. companyObjeto JSON Objeto JSON contendo todos os seguintes parâmetros: namestring Campo utilizado para cadastrar o nome da empresa. addressstring Campo utilizado para cadastrar o endereço da empresa. tipo_docinteiro Se 1, cadastra campo cpf_cnpj como CNPJ, se 2, cadastra CPF. cpf_cnpjinteiro Campo utilizado para cadastrar o CPF ou CNPJ, vai depender do valor atribuido ao campo tipo_doc. ceiinteiro Campo utilizado para cadastrar o CEI (Cadastro Específico do INSS). Se o equipamento for homologado com a Portaria 671, este mesmo campo é utilizado para se informar o CAEPF (Cadastro de Atividades Econômicas da Pessoa Física) ou CNO (Cadastro Nacional de Obras), também como valores inteiros. cpfinteiro Campo utilizado para cadastrar o CPF. $.ajax({ url: "/edit_company.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ company: { tipo_doc: 1, cpf_cnpj: 4545454, cei: 11111111111, cpf: 12232115412, name: 'Control iD', address:'Rua Hungria 888' } }) });
ListarCarrega os dados do empregadorload_company Retorna os dados do empregador. O método HTTP usado é o POST. companyObjeto JSON O método retorna um objeto JSON contendo todos os seguintes parâmetros: namestring Nome da empresa. addressstring Endereço da empresa. tipo_docinteiro Se 1, campo cpf_cnpj é CNPJ, se 2, é CPF. cpf_cnpjinteiro CPF ou CNPJ dependendo do campo tipo_doc. ceiinteiro CEI (Cadastro Específico do INSS) da empresa. Se o equipamento for homologado com a Portaria 671, este mesmo campo é utilizado para se informar o CAEPF (Cadastro de Atividades Econômicas da Pessoa Física) ou CNO (Cadastro Nacional de Obras), também como valores inteiros. cpfinteiro CPF do responsável. "company": { "name": "Control iD", "address": "Rua Hungria 888", "cpf": 45623245623, "tipo_doc": 1, "cpf_cnpj": 89765478985464, "cei": 123456789874 }
Informações do SistemaObtém informações e estatísticas do REPget_system_information Obtém as informações e estatísticas do REP: tempo ligado, quantidade de usuários, templates, tickets, quantidade de bobina, total de bobina, memória do REP, a última NSR etc. O resultado é um objeto JSON que contém as seguintes chaves: uptimeinteiro Indica há quanto tempo o equipamento está ligado. user_countinteiro Contém a quantidade de digitais de todos os usuários cadastrados no equipamento. template_countinteiro Contém a quantidade de digitais de todos os usuários cadastrados no equipamento. ticksinteiro Indica há quanto tempo o REP está ligado. cutsinteiro Retorna a quantidade de tickets gerados até o momento em que o método foi utilizado. coil_paperinteiro Retorna a quantidade de bobina que ainda tem no REP. total_paperinteiro Retorna a quantidade total de bobina antes do REP ser utilizado. paper_okbooleano Indica se o REP está, ou não, pronto pra imprimir. low_paperbooleano Indica se tem ou não pouco papel, caso o retorno seja 'null' o REP não possui sensor de pouco papel. memoryinteiro Retorna a quantidade de memória utilizada. used_mrpinteiro Retorna a quantidade de MRP utilizada, baseado na quantidade de informações armazenadas no REP. last_nsrinteiro Retorna o número da última marcação realizada no REP, ou seja, a última vez que foi emitido o comprovante. $.ajax({ url: "/get_system_information.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Informações do REPObtém informações do REPget_about Obtém as seguintes informações do REP: mac, nSerie, versionFW (firmware), versionMRP. O resultado é um objeto JSON que contém as seguintes chaves: macstring Indica o endereço do MAC do REP. nSeriestring Indica o número de série do REP. versionFWinteiro Indica a versão do firmware do REP. versionMRPinteiro Indica a versão da MRP. $.ajax({ url: "/get_about.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Ativar o iDCloudEsse método executa o iDCloudset_idcloud Esse método é utilizado para ativar ou desativar o iDCloud no REP. enablebooleano

Deixar o valor de "enable" = true para ativar o iDCloud

$.ajax({ url: "/set_idcloud.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ enable: true }) });
Status iDCloudRetorna o status do iDCloudget_idcloud Retorna o status do iDCloud; se enable = true, o iDCloud está ativado. enableBooleano Retorna o status do iDCloud. $.ajax({ url: "/get_idcloud.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Alterar a data e horaAltera a data e a hora do sistemaset_system_date_time Altera a data e a hora do sistema. O método HTTP usado é o POST. dayinteiro Valor numérico representando o dia do mês. monthinteiro Valor numérico representando o mês. Valores válidos entre 1 e 12. yearinteiro Valor numérico representando o ano. Exemplo: 2014 hourinteiro Valor numérico representando a hora. Valores válidos entre 0 e 23. minuteinteiro Valor numérico representando os minutos. Valores válidos entre 0 e 59. secondinteiro Valor numérico representando os segundos. Valores válidos entre 0 e 59. timezonestring String que representa o fuso horário. O formato a ser seguido é sHHMM, em que "s" representa o sinal (+ ou -), "H" as horas e "M" os minutos (apenas múltiplos de 15). O usuário precisa especificar que o modelo utilizado é o 671 a fim de se evitar conflito com as versões legadas.$.ajax({ url: "/set_system_date_time.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ day: 10, month: 12, year: 1983, hour: 21, minute: 30, second: 00 }) });$.ajax({ url: "/set_system_date_time.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ day: 10, month: 03, year: 2023, hour: 21, minute: 30, second: 00, timezone: "-0300" }) });
Retorna data e horaRetorna a data e hora do REPget_system_date_time Retorna a data e hora do REP. O método HTTP usado é o POST. dayinteiro Retorna o valor numérico representando o dia do mês. monthinteiro Retorna o valor numérico representando o mês. yearinteiro Retorna o valor numérico representando o ano. hourinteiro Retorna o valor numérico representando a hora. minuteinteiro Retorna o valor numérico representando os minutos. secondinteiro Retorna o valor numérico representado os segundos. timezone (opcional)string Retorna o fuso horário caso o modelo do equipamento siga a Portaria 671. $.ajax({ url: "/get_system_date_time.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Animação do REPEsse método executa a animação do REPset_animation_screen Setar a animação do REP. enabledbooleanoSe enabled = true, a animação do REP está ativada.$.ajax({ url: "/set_animation_screen.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ enabled: true }) });
Baixar AFDObtém o arquivo AFD do REPget_afd Obtém o arquivo AFD do REP com todas as marcações realizadas até o momento da execução do método.
FORMATO DO ARQUIVO AFD

Para REPs homologados com a Portaria 671 (MTP 2021), o retorno pode seguir tanto o formato legado das Portarias anteriores (MTE 1510/2009, Inmetro 595/2013) quanto o novo formato definido pela Portaria 671.

Caso a requisição contenha o parâmetro mode na query_string com o valor 671, o retorno seguirá o formato definido pela Portaria 671.

Para qualquer outro valor, ou na ausência do parâmetro mode, o AFD retornado seguirá o formato legado já praticado pelo iDClass de modelos mais antigos.

Veja os exemplos de código no final da página.

initial_dateObjeto JSON initial_date é um objeto JSON, que contém os seguintes parâmetros: yearinteiro Retorna o valor numérico representando o ano. monthinteiro Retorna o valor numérico representando o mês. dayinteiro Retorna o valor numérico representando o dia. initial_nsrinteiro Retorna as marcações a partir da NSR informada até o final.
$.ajax({ url: "/get_afd.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });$.ajax({ url: "/get_afd.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ initial_date:{ day: 1, month: 1, year: 2023 } }) });$.ajax({ url: "/get_afd.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ initial_nsr: 14 } }) });$.ajax({ url: "/get_afd.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Beep do equipamentoAtiva ou desativa o beep do equipamento.set_buzzer_beep Ativa o som de beep do equipamento. enabledBooleano Se enabled = true, o REP está com o beep ligado. $.ajax({ url: "/set_buzzer_beep.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ enabled: true }) });
Chave públicaRetorna a chave pública do REPget_public_key Chave pública do REP. base32string Retorna a chave pública em base32. base64string Retorna a chave pública em base64. $.ajax({ url: "/get_public_key.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Configurações de redeRetorna ou altera as configurações de rede do REPget_system_network Obtém as configurações de rede previamente definidas no REP. O método HTTP usado é o POST. IPstring Texto representando o IP que o equipamento deve assumir, por exemplo: "192.168.2.185". netmaskstring Texto representando a máscara de rede que o equipamento deve assumir. Exemplo: "255.255.128.0". gatewaystring Endereço IP do gateway da rede. Exemplo: "192.168.2.1". DNSstring Endereço do DNS da rede. Exemplo: "13.0.0.234". set_system_network Altera as configurações de rede do equipamento. O método HTTP usado é o POST. IPstring Texto representando o IP que o equipamento deve assumir, por exemplo: "192.168.0.1". netmaskstring Texto representando a máscara de rede que o equipamento deve assumir. Exemplo: "255.255.255.0". gatewaystring Endereço IP do gateway da rede. Exemplo: "192.168.0.1". DNSstring Endereço do DNS da rede. Exemplo: "13.0.0.234". $.ajax({ url: "/set_system_network.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ ip: '192.168.2.185', netmask: '255.255.128.0', gateway: '192.168.0.1', dns: '13.0.0.234' }) });
Setar o tamanho da bobinaSetar o tamanho da bobina inserida no REPset_coil_paper O método seta a quantidade de bobina que há no REP. O resultado é um objeto JSON que contém as seguintes chaves: coil_paperinteiro Define a quantidade de bobina do REP. $.ajax({ url: "/set_coil_paper.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ "coil_paper":200 }) });
Quantidade de bobina no REPRetorna a quantidade de bobina do REPget_coil_paper O método retorna a quantidade de bobina que há no REP. O resultado é um objeto JSON que contém as seguintes chaves: coil_paperinteiro Retorna a quantidade de bobina que há no REP. $.ajax({ url: "/get_coil_paper.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Tamanho do TICKETSetar o tamanho do TICKETset_ticket_size Setar o tamanho do ticket do equipamento. economic_receipt_enabledBooleano Se economic_receipt_enabled = true, o TICKET está com tamanho curto. $.ajax({ url: "/set_ticket_size.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ economic_receipt_enabled: true }) });
Tipo de identificaçãoAltera a forma de identificação no REP.set_identification_type Setar a forma como o usuário vai se identificar no REP. one_to_one_enabledbooleano Se one_to_one_enabled = true, estará mudando para a forma de identificação 1:1, os usuários precisarão se identificar por senha ou cartão antes de usar o leitor biométrico, caso contrário a forma de identificação é 1:N, podendo se identificar somente por uma forma específica (biometria, senha ou cartão). $.ajax({ url: "/set_identification_type.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ one_to_one_enabled: true }) });
Horário de verãoAltera o horário de verão do REPset_system_daylight_saving_time Altera o horário de verão do REP. O método HTTP usado é o POST. start_date_timeObjeto JSON start_date_time é um objeto JSON, que contém os seguintes parâmetros: yearinteiro Valor numérico representando o ano. monthinteiro Valor numérico representando o mês. Valores válidos entre 1 e 12. dayinteiro Valor numérico representando o dia. Exemplo: 3 end_date_timeObjeto JSON end_date_time é um objeto JSON, que contém os seguintes parâmetros: yearinteiro Valor numérico representando o ano. Exemplo: 2014 monthinteiro Valor numérico representando o mês. Valores válidos entre 1 e 12. dayinteiro Valor numérico representando o dia. Valores válidos entre 1 e 31. $.ajax({ url: "/set_system_daylight_saving_time.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ "start_date_time": { year: 2016, month: 3, day: 1 }, "end_date_time": { "year": 2016, "month": 4, "day": 1 } }) });
Retorna horário de verãoRetorna o horário de verão do REPget_system_daylight_saving_time Retorna o horário de verão do REP. O método HTTP usado é o POST. start_date_timeObjeto JSON start_date_time é um objeto JSON, que contém os seguintes parâmetros: yearinteiro Retorna o valor numérico representando o ano. monthinteiro Retorna o valor numérico representando o mês. dayinteiro Retorna o valor numérico representando o dia. end_date_timeObjeto JSON end_date_time é um objeto JSON, que contém os seguintes parâmetros: yearinteiro Retorna o valor numérico representando o ano. monthinteiro Retorna o valor numérico representando o mês. dayinteiro Retorna o valor numérico representando o dia. $.ajax({ url: "/get_system_daylight_saving_time.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Informações de usuários do REPObtém informações de usuários do REPget_info Obtém as seguintes informações do REP: número de série, número de usuários, administradores, quantidade de digitais, senhas, código de barras, rfid, tempo ligado etc. O resultado é um objeto JSON que contém as seguintes chaves: num_seriestring Indica o número de série do REP. user_countinteiro Indica a quantidade de usuários. administrator_countinteiro Indica a quantidade de usuários que são administradores. template_countinteiro Contém a quantidade de digitais de todos os usuários cadastrados no equipamento. password_countinteiro Contém a quantidade de senhas de todos os usuários cadastrados no equipamento. bars_countinteiro Contém a quantidade de códigos de barras cadastrados no REP. rfid_countinteiro Contém a quantidade de cartões cadastrados. uptimeinteiro Retorna o tempo que o REP está ligado. low_on_paperbooleano Indica se tem ou não pouco papel, caso o retorno seja 'null' o REP não possui sensor de pouco papel. Atenção: Esse campo está obsoleto.cutsinteiro Indica o total de tickets impressos. total_printedinteiro Indica o total de tickets impressos (em decímetros). $.ajax({ url: "/get_info.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Configurações específicas do REPObtém informações de configuração do REPget_system_configuration Obtém as configurações específicas do REP. beep_enabledbooleano Indica se o REP está com o beep ligado. animation_enabledbooleano Indica se o REP está com a animação ativada. economic_receipt_enabledbooleano Indica se a opção ticket curto está ativada. one_to_one_enabledbooleano Indica se a identificação 1:1 está ativada. $.ajax({ url: "/get_system_configuration.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ }) });
Extrair TemplateExtrai os bytes de uma imagem.template_extract Extrai template biométrico de uma imagem Bitmap. O método HTTP usado é o POST e o contentType é octet-stream. widthinteiro Largura, em pixels. heightinteiro Altura, em pixels. $.ajax({ url: "/template_extract.fcgi?session=" + session + "&width=260&height=320", type: 'POST', contentType: 'application/octet-stream', contentLength: quantidade de bytes, data: binario_imagem }) });
Combinar TemplatesCombinar os templatesO template é um conjunto de bytes obtidos pelo algoritmo Innovatrics existente dentro do equipamento que representa uma digital.template_merge Transforma 3 templates de base64 em um template final. O método HTTP usado é o POST. templatesarray de string Esse campo deve conter três templates, um para cada digital extraída. user_pisinteiro Esse campo deve conter o PIS do usuário que está sendo gerado o template final. Este parâmetro é o padrão para Portarias anteriores. Para utilizá-lo no modelo 671, basta passar um valor de modo diferente de 671 na query_string, através do parâmetro mode ou não informar modo algum (ver exemplo). user_cpfinteiro Esse campo deve conter o CPF do usuário que está sendo gerado o template final e só estará acessível quando o REP for um modelo homologado com a Portaria 671 e caso o usuário passe explicitamente o valor 671 para o parâmetro mode na query_string (ver exemplo). new_templatesarray de string Esse campo deve conter os templates combinados e que ainda não foram salvos no equipamento. Entretanto, pode ser passado vazio. removebooleano Este campo indica se os templates previamente cadastrados para o usuário em questão devem ser considerados durante a checagem ou não. Setar para true se desejar ignorar os templates já cadastrados. $.ajax({ url: "/template_merge.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ "new_templates":[], "remove":false, "templates":[ "SUNSUzIxAAAE8" ], "user_pis":12341234123 }) });$.ajax({ url: "/template_merge.fcgi?session=" + session + "&mode=671", type: 'POST', contentType: 'application/json', data: JSON.stringify({ "new_templates":[], "remove":false, "templates":[ "SUNSUzIxAAAE8" ], "user_cpf":12341234123 }) });