===== Informações ===== **Versão da API:** 2.0 **Documentação da versão anterior:** [[api_flashman|Acessar]] ===== Autenticação ===== Todos os métodos da API necessitam de autenticação. É possível utilizar o usuário e senha de acesso via Web. **Tipo da autenticação:** Basic Auth ===== Métodos para roteadores ===== ==== Filtrar/buscar roteadores ==== == Formato da URL == /api/v2/device/search{?page=1&limit=10} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | Page | Número da paǵina da busca. Observe o retorno da busca para o número total de páginas. | Inteiro | Não | | Limit | Número máximo de CPEs a serem buscadas. Limitado a buscar, no máximo, 50 CPEs por página. | Inteiro | Não | == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | filter_list | Lista com todos os filtros desejados | String | Sim | | query_result_filter | Filtrar campos que serão retornados nos resultados | String | Não | | | | | | * Obs.: O parâmetro query_result_filter pode incluir o marcador "-" antes de cada campo para apenas excluir os campos indicados do resultado. * Obs.2: Os seguintes campos não podem ser filtrados do resultado: releases, status_color, permissions, wifi_state, wifi_state_5ghz. == Exemplo do Body == { "filter_list": "online,/ou,offline", "query_result_filter": "-firstboot_log,-lastboot_log" } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK. Observar variável "success" no body da mensagem para status de sucesso da busca | == Exemplos de Retorno == { "success": false, "message": "Erro ao acessar base de dados", "type": "danger" } { "type": "success", "limit": 10, "page": 1, "pages": 2, "min_length_pass_pppoe": 7, "status": { "onlinenum": 12, "recoverynum": 0, "offlinenum": 0, "totalnum": 12 }, "single_releases": [ { "id": "0042-aix", "model": [ "DWR-116A3", "NCLOUDV1", "ARCHERC20V4", "ARCHERC5V4", "TL-WDR3500V1", "TL-WDR3600V1", "TL-WDR4300V1", "TL-WR741NDV4", "TL-WR840NV4", "TL-WR840NV5", "TL-WR841NDV7", "TL-WR841NDV8" ] }, { "id": "0000-dos", "model": [ "ARCHERC20V4" ] } ], "filter_list": "online", "devices": [ { "_id": "0C:80:63:FF:FF:FF", "version": "0.16.0", "wifi_is_5ghz_capable": true, "do_update_status": 1, "mqtt_secret_bypass": false, "ping_hosts": [ "www.google.com", "www.youtube.com", "www.facebook.com", "www.instagram.com", "www.apple.com" ], "model": "ARCHERC5V4", "installed_release": "0052-aix", "release": "0052-aix", "pppoe_user": "teste@teste", "pppoe_password": "teste", "lan_subnet": "192.168.42.0", "lan_netmask": 24, "wifi_ssid": "Ap-24ghz", "wifi_password": "teste1234", "wifi_channel": "auto", "wifi_band": "HT20", "wifi_mode": "11n", "wifi_ssid_5ghz": "Ap-5ghz", "wifi_password_5ghz": "teste1234", "wifi_channel_5ghz": "149", "wifi_band_5ghz": "VHT80", "wifi_mode_5ghz": "11ac", "wan_ip": "177.158.199.199", "wan_negociated_speed": "100", "wan_negociated_duplex": "full", "ip": "177.158.199.199", "last_contact": "2019-06-25T20:10:19.405Z", "do_update": false, "do_update_parameters": false, "apps": [ { "_id": "zzzzzzzzzzzz", "id": "aaaaaaaaaaaaaa", "secret": "aaaaaaaaaaaaaaa" }, { "_id": "yyyyyyyyyyyyyyyyy", "id": "bbbbbbbbbbbbbbb", "secret": "bbbbbbbbbbbbbbb" } ], "connection_type": "pppoe", "__v": 47, "mqtt_secret": "jsadshdajnsudshasjasawqqwass", "lastboot_date": "2019-06-23T17:00:33.768Z", "ntp_status": "0.000164", "firstboot_date": "2019-06-18T04:38:28.537Z", "external_reference": { "kind": "Outro", "data": "Usuário de Teste" }, "app_password": "teste", "forward_index": "1561489581029", "last_devices_refresh": "2019-06-25T19:07:10.921Z", "id": "FF:FF:FF:B9:64:43", "releases": [ { "id": "0042-aix", "model": "ARCHERC5V4" }, { "id": "0047-aix", "model": "ARCHERC5V4" } ], "status_color": "green-text", "permissions": { "grantViewLogs": true, "grantResetDevices": true, "grantPortForward": true, "grantPortForwardAsym": true, "grantPortOpenIpv6": true, "grantWifi5ghz": true, "grantWifiBand": true, "grantPingTest": true, "grantLanEdit": true, "grantLanDevices": true } } ] } ==== Consultar roteadores ==== == Formato da URL == /api/v2/device/get == Método HTTP == POST == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | filter_list | Lista com todos os filtros desejados | String | Sim | | fields | Filtrar campos que serão retornados nos resultados | String | Sim | | | | | | == Exemplo do Body == { "filter_list": "online,/ou,offline", "fields": "_id,use_tr069,model" } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK. Retorna as informações dos roteadores encontrados | == Exemplos de Retorno == [ { "_id": "18:0D:2C:5E:37:00", "use_tr069": false, "model": "ACTIONRG1200V1" }, { "_id": "F8:6C:E1:E9:30:40", "use_tr069": true, "model": "G-140W-C" }, { "_id": "98:00:6A:96:9B:84", "use_tr069": true, "model": "F670L" } ] ==== Consultar informações de um roteador ==== == Formato da URL == /api/v2/device/update/{ID do CPE} == Método HTTP == GET == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, retorna as informações do roteador | | 404 | Roteador não encontrado | | 500 | Erro interno do servidor | == Exemplos de Retorno == { "success": false, "message": "device not found" } { "external_reference": { "kind": 'CPF', // Poderá ser CPF, CNPJ ou Outro "data": '123.456.789-00' }, "apps": [], _id: '11:11:11:11:11:11', // Endereço MAC da WAN ou da interface de Wi-Fi a depender do modelo de CPE "model": 'TL-MR3020V1', "release": '0004-AIX', "pppoe_user": '', "pppoe_password": '', "pppoe_ip": "192.168.89.1", // IP do CPE informado pela conexão PPP, se existir. "pppoe_mac": "c4:ad:34:c3:db:f1", // MAC do CPE informado pela conexão PPP, se existir "wifi_ssid": 'TesteSSID', "wifi_password": 'SenhaWifi', "wifi_channel": 'auto', "wifi_last_channel": "7", // Poderá informar último canal utilizado pelo CPE caso esteja em auto "wifi_band": "HT40", // Poderá ser auto, HT20, HT40, VHT20, VHT40, VHT80 ou VHT160 "wifi_last_band": "20", // Poderá informar última largura de canal utilizado pelo CPE caso esteja em auto "wifi_mode": "11n", // Poderá ser 11g, 11n, 11na, 11ac, 11ax "wifi_state": 1, // Poderá ser 1 se estiver habilitado ou 0 caso contrário "wifi_hidden": 0, // Poderá ser 1 se SSID estiver escondido. "wifi_power": 75, // Potência na antena de 0 a 100. Valores percentuais. "wifi_is_5ghz_capable": true, // Poderá ser true caso CPE seja dual band "wifi_ssid_5ghz": "Anlix-MESH-AP-5GHz", "wifi_password_5ghz": "aaaaaaaaaaa", "wifi_channel_5ghz": "161", "wifi_last_channel_5ghz": "161", "wifi_band_5ghz": "VHT40", "wifi_last_band_5ghz": "20", "wifi_mode_5ghz": "11ac", "wifi_state_5ghz": 1, "wifi_hidden_5ghz": 0, "wifi_power_5ghz": 100, "upnp_requests": [], // Pedidos de liberação de regra via uPnP "mesh_mode": 0, // Poderá ser 0 -> desabilitado, 1 -> somente por cabo, 2 -> somente por 2.4GHz, 3 -> 5.0Ghz e 4 para todos os modos "mesh_slaves": [], // CPEs secundárias na rede mesh "mesh_father": "", // CPE principal na rede mesh "bridge_mode_enabled": false, // CPE em modo bridge "bridge_mode_switch_disable": false, // Estado do switch do CPE quando modo bridge habilitado "last_contact": 2018-01-01T03:00:00.000Z, "do_update": false, "do_update_parameters": true, "connection_type": 'dhcp', // Poderá ser pppoe ou dhcp "ip": '5.5.5.5', // Informação de IP do CPE visível pelo servidor do Flashman "wan_ip": '10.10.10.10', // Informação de IP da WAN enviado pelo CPE "wan_ipv4_mask": 32, "wan_ipv6_mask": 64, "ipv6_enabled": 1, // Poderá ser 1 se ipv6 habilitado ou 0 se estiver desabilitado. O valor 2 será informado quando estado desconhecido. "wan_ipv6": "2804:3e0:0:4200:e80:63ff:feb9:6444", "prefix_delegation_addr": "fc00:dead:c0de:700::", "prefix_delegation_local": "fc00:dead:c0de:700::1", "prefix_delegation_mask": "64", "wan_negociated_speed": "1000", // Poderá ser vazio, 10, 100, 1000 ou 10000 "wan_negociated_duplex": "full", // Poderá ser vazio, half ou full "lan_subnet": "10.0.30.1", "lan_netmask": 24, "current_diagnostic": { // Último diagnóstico realizado pelo CPE. Poderá ser qualquer procedimento ativo disponível para o CPE. "type": "speedtest", // Poderá ser speedtest, ping, traceroute, sitesurvey "stage": "done", // Poderá ser estimative, measure, initiating, error, done "customized": false, "in_progress": false, "started_at": "2023-03-29T13:44:24.876Z", "last_modified_at": "2023-03-29T13:44:31.850Z", "targets": [ "192.168.88.6:25752" // Destinos do diagnóstico. Poderá ser vazio a depender do diagnóstico ], "user": "raul", // Usuário do Flashman ou app que realizou o disparo do diagnóstico "webhook_url": "", // Webhook de retorno do teste. Caso vazio será utilizada a configuração de callback padrão. "webhook_user": "", "webhook_secret": "", "recursion_state": 5 }, "use_tr069": false, // CPE é gerenciado por TR-069 caso o valor seja true "secure_tr069": true, // CPE utiliza HTTPS para ser gerenciado por TR-069 "sys_up_time": 878952, // Valor em segundos de tempo de CPE ligado "wan_up_time": 676051, // Valor em segundos de tempo de CPE conectado "latitude": -22.9228285, "longitude": -43.2341451, "wps_is_active": false, // Poderá ser true se WPS ativo no CPE "wps_last_connected_mac": "", // MAC do último dispositivo conectado por WPS no CPE "cpu_usage": 10, // Último valor percentual de uso de CPU. De 0 a 100. Valor 101 significa resultado desconhecido "memory_usage": 101, // Último valor percentual de uso de RAM. De 0 a 100. Valor 101 significa resultado desconhecido "isSsidPrefixEnabled": false, // Poderá ter prefixo SSID habilitado se true "vlan": [ // Poderá ser vazio. VLANs ID configuradas em cada por LAN { "vlan_id": 1, "_id": "631747ae8cfdad24d97249f9", "port": 1 }, { "vlan_id": 1, "_id": "631747ae8cfdad24d97249fa", "port": 2 }, ], "lan_devices": [ { "is_blocked": false, "port": [], "router_port": [], "dmz": false, "ipv6": [ "fe80::2094:c6ff:fe74:f653" ], "dhcpv6": null, "upnp_permission": "none", "_id": "63175b8fe9410d24b56177c1", "mac": "22:94:c6:74:f6:53", "dhcp_name": "K41S", "first_seen": "2022-09-06T14:39:11.989Z", "last_seen": "2023-01-17T17:52:31.077Z", "ip": "10.0.30.160", "conn_type": 1, "conn_speed": 65, "wifi_signal": -61, "wifi_snr": 24, "wifi_freq": 2.4, "wifi_mode": "N", "wifi_fingerprint": "", "dhcp_fingerprint": "1,3,6,15,26,28,51,58,59,43,114,108", "dhcp_vendor_class": "android-dhcp-11", "ping": 115.361 }, ], "ap_survey": [ // Lista de redes Wi-Fi ao redor coletadas no último diagnóstico de site survey agendado. { "_id": "631df5961478f456186a761b", "mac": "ff:ff:ff:90:00:d1", "ssid": "Anlix-Macbook", "freq": 2417, "signal": -18, "width": 20, "VHT": false, "first_seen": "2022-09-11T14:49:58.224Z", "last_seen": "2023-03-24T18:11:52.157Z" }, ], "pingtest_results": [ // Resultado de ping para os destinados especificados no último diagnóstico de ping agendado. { "lat": "---", // Valores em ponto flutuante 0.00 ou --- na ausência de resposta "loss": "---", "count": "---", "completed": false, "_id": "641c6c7d7e3602002bbe91e0", "host": "www.globo.com" }, ], "speedtest_results": [ // Resultados de teste de velocidade agendados no por diagnóstico. { "_id": "637bc5d50ee75719c062966a", "user": "admin", // Usuário do Flashman, app do técnico ou disparo pelo app do cliente "timestamp": "21/11/2022 15:39", "down_speed": "234 Mbps" }, ], "traceroute_results": [ // Lista com resultados de traceroute realizados no último diagnóstico agendado. { "all_hops_tested": true, // Valor true caso todos os saltos informarem resposta "reached_destination": true, // Valor true se destino foi alcançado "address": "www.globo.com", "tries_per_hop": 3, "completed": true, // Valor false em caso de diagnóstico em andamento "_id": "641c6c637e3602002bbe91c3", "hops": [ { "hop_index": 1, "ip": "192.168.89.1", "ms_values": [ // Valores em milissegundos da latência para o salto informado no campo ip "0.480", "0.220", "0.320" ], "_id": "641c6c657e3602002bbe91c9" }, ], }, ], "lastboot_date": "2023-03-25T10:05:20.986Z", // Data de último boot do CPE. Poderá ser vazio para alguns CPEs "last_devices_refresh": "2023-03-29T18:47:39.690Z", // Obsoleto. Para alguns CPEs, informa data de última coleta de aparelhos. "wan_bytes": { // Bytes trafegados na WAN em alguns instantes de tempo "1679580929": [ // Chave do dicionário refere-se ao tempo em formato epoch da coleta 50528273959, // Total de bytes cumulativos no sentido downstream 14623344764 // Total de bytes cumulativos no sentido upstream ], "1679580989": [ 50528466107, 14623507966 ], }, "firstboot_date": "2023-02-12T22:27:16.748Z", // Data de primeiro boot do CPE. Será para CPEs gerenciados por TR-069 "default_gateway_v4": "192.168.89.1", // Gateway IPv4 de saída padrão da conexão WAN do CPE. Poderá ser vazio a depender do CPE. "default_gateway_v6": "fe80::f2:d293", // Gateway IPv6 de saída padrão da conexão WAN do CPE. Poderá ser vazio a depender do CPE. "dns_server": "192.168.88.1", // Servidor de DNS utilizado pelo CPE. Poderá ser vazio de acordo com o CPE. "is_license_active": true, // Informa se licença Flashbox do CPE está ativo ou bloqueado } ==== Alterar informações de um roteador ==== == Formato da URL == /api/v2/device/update/{ID do CPE} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato | **Valores** ^ Obrigatório ^ | pppoe_user | Usuário PPPoE | String | | Não | | pppoe_password | Senha do usuário PPPoE | String | | Não | | wifi_ssid | Identificação do ponto de acesso sem fio do usuário (SSID) | String | | Não | | wifi_password | Senha do ponto de acesso sem fio do usuário | String | Mínimo de 8 caracteres | Não | | wifi_channel | Canal do 802.11 | String | "auto","1","2","3","4","5","6","7","8","9","10","11" | Não | | connection_type | Tipo de conexão WAN | String | "dhcp" ou "pppoe" | Não | | ipv6_enabled | Habilitar Ipv6 | Integer | 0 - Desligado , 1 - Ligado | Não | | lan_subnet | Gateway da subrede LAN | String | IP válido | Não | | lan_netmask | Máscara da subrede LAN | String | "24", "25", "26" | Não | | wifi_band | Largura de banda Wi-Fi 2.4GHz | String | 'HT20', 'HT40' | Não | | wifi_mode | Modo de operação Wi-Fi 2.4GHz | String | '11g', '11n' | Não | | wifi_power | Potência da antena Wi-Fi 2.4GHz | Integer | 25, 50, 75, 100 (por cento) | Não | | wifi_state | Liga/Desliga Wi-Fi 2.4GHz | Integer | 0 - Off , 1 - On | Não | | wifi_hidden | Esconder SSID Wi-Fi 2.4GHz | Integer | 0 - Visível, 1 - Escondido | Não | | wifi_ssid_5ghz | Identificação do ponto de acesso sem fio do usuário (SSID) | String | | Não | | wifi_password_5ghz | Senha do ponto de acesso sem fio do usuário | String | Mínimo de 8 caracteres | Não | | wifi_channel_5ghz | Canal do 802.11 | String | 'auto','36', '40', '44', '48', '52', '56', '60', '64','149', '153', '157', '161', '165' | Não | | wifi_band_5ghz | Largura de banda Wi-Fi 5.0GHz | String | 'VHT20', 'VHT40', 'VHT80' | Não | | wifi_mode_5ghz | Modo de operação Wi-Fi 5.0GHz | String | '11na', '11ac' | Não | | wifi_power_5ghz | Potência da antena Wi-Fi 5.0GHz | Integer | 25, 50, 75, 100 (por cento) | Não | | wifi_state_5ghz | Liga/Desliga Wi-Fi 5.0GHz | Integer | 0 - Off , 1 - On | Não | | wifi_hidden_5ghz | Esconder SSID Wi-Fi 5.0GHz | Integer | 0 - Visível, 1 - Escondido | Não | | mesh_mode | Tipo do modo Mesh (Quando for compatível) | Integer | 0 - Off, 1 - Cabo, 2 - Cabo e 2.4, 3 - Cabo e 5.0, 4 - Cabo e ambos Wi-Fi | Sim | | bridgeEnabled | Habilitar modo bridge/AP no roteador | Integer | 0 - Off, 1 - On | Não | | bridgeDisableSwitch | Desabilitar portas LAN cabeadas | Integer | 0 - Modo router , 1 - Modo bridge | Não | | bridgeFixIP | Fixar IP WAN do roteador no modo bridge | String | IP válido | Não | | bridgeFixGateway | Fixar | String | IP válido | Não | | bridgeFixDNS | | String | IP válido | Não | | | | | | | == Exemplo do Body == { "content": { "pppoe_user": "teste", "pppoe_password": "teste123", "wifi_ssid": "FlashMan-AP-Teste", "wifi_password": "senhateste", "wifi_channel": "auto" } } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, retorna as informações do roteador alterado | | 404 | Roteador não encontrado | | 500 | Erro no servidor, mais informações no body da mensagem de retorno | == Exemplos de Retorno == { "success": false, "message": "device not found", "errors": [] } { "success": true, "external_reference": { "kind": 'CPF', "data": '123.456.789-00' }, "apps": [], _id: '11:11:11:11:11:11', "model": 'TL-MR3020V1', "release": '0004-AIX', "pppoe_user": '', "pppoe_password": '', "wifi_ssid": 'TesteSSID', "wifi_password": 'SenhaWifi', "wifi_channel": 'auto', "last_contact": 2018-01-01T03:00:00.000Z, "do_update": false, "do_update_parameters": true, "__v": 0 } { "success": false, "message": 'Erro validando os campos, ver campo "errors"', "errors": [ "password": "Este campo deve ter no mínimo 8 caracteres" ] } ==== Habilitar ou desabilitar atualização de firmware de um roteador ==== == Formato da URL == /api/v2/device/update/{ID do CPE}/{Release} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | | Release | Identificador de release do firmware. Exemplo: 0001-fab | String | Sim | == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | do_update | Habilitar ou desabilitar a atualização de firmware | Booleano | Sim | == Exemplo do Body == { "do_update": true } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, alteração feita com sucesso | | 500 | Erro no servidor, mais informações no body da mensagem de retorno | == Exemplos de Retorno == { "success": false, "message": "Erro ao encontrar dispositivo" } { "success": true } ==== Remover registro de roteador ==== == Formato da URL == /api/v2/device/delete/{ID do CPE} == Método HTTP == DELETE == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, roteador foi deletado com sucesso | | 500 | Erro interno do servidor | == Exemplos de Retorno == { "success": true } ==== Criar registro de um roteador ==== == Formato da URL == /api/v2/device/create == Método HTTP == PUT == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | mac_address | Endereço MAC do roteador que encontra-se na etiqueta do equipamento | [A-F]:[A-F]:[A-F]:[A-F]:[A-F]:[A-F] | Sim | | release | Identificador de release do firmware. Exemplo: 0001-fab | String | Não | | pppoe_user | Usuário PPPoE | String | Não | | pppoe_password | Senha do usuário PPPoE | String | Não | | wifi_ssid | Identificação do ponto de acesso sem fio do usuário (SSID) | String | Não | | wifi_password | Senha do ponto de acesso sem fio do usuário | String | Não | | wifi_channel | Canal do 802.11 Wi-Fi 2.4GHz | String | Não | | wifi_band | Largura de banda Wi-Fi 2.4GHz | String | Não | | wifi_mode | Modo de operação Wi-Fi 2.4GHz | String | Não | == Exemplo do Body == { "content": { "mac_address": "FF:FF:FF:00:00:00", "release": "0001-fab", "pppoe_user": "teste", "pppoe_password": "teste123", "wifi_ssid": "FlashMan-AP-Teste", "wifi_password": "senhateste", "wifi_channel": "auto", "wifi_band": "auto", "wifi_mode": "11g" } } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, roteador criado com sucesso | | 500 | Erro no servidor, mais informações no body da mensagem de retorno | == Exemplos de Retorno == { "success": false, "message": "Erro no json recebido", "errors": [] } { "success": true, } { "success": false, "message": 'Erro validando os campos, ver campo "errors"', "errors": [ "password": "Este campo deve ter no mínimo 8 caracteres" ] } ==== Enviar comando para um roteador ==== == Formato da URL == /api/v2/device/command/{ID do CPE}/{Comando} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | | Comando | Tipo de comando a ser desempenhado pelo roteador Flashbox | Veja os comandos suportados logo abaixo | Sim | ^ Comando ^ Descrição ^ | boot | Reiniciar roteador Flashbox | | log | Envia o de log do roteador para o Flashman. Para ver o log, use o comando de visualizar último log | | onlinedevs | Inicia a coleta de aparelhos conectados ao CPE | | ping | Inicia execução de teste ping para lista de endereços previamente configurados | | pondata | Inicia execução da coleta de dados do nível de sinal da interface PON. Utilizar registro de callback para coletar campos pon_rxpower, pon_txpower e pon_signal_measure | | rstapp | Apagar senha de login do aplicativo do usuário final | | rstdevices | Reseta a senha do aplicativo do cliente | | rstmqtt | Cuidado! Gera um novo token MQTT. Apenas use esse comando após a remoção do cadastro do roteador no Flashman | | sitesurvey | Inicia execução da varredura de redes vizinhas. Utilizar registro de callback para a coleta dos resultados. | | speedtest | Inicia execução de teste de velocidade para o servidor configurado (Flashman 1.28.0 ou superior e Flashbox 0.24.0 ou superior) | | traceroute | Inicia execução do teste de traceroute para os destinos previamente definidos através da chamada de API "pinghostslist" | | upstatus | Inicia execução da coleta de quanto tempo o roteador está online e conectado. Também coleta o tráfego na WAN em bytes | | wanbytes | Inicia execução da coleta de bytes trafegados na WAN tanto para upload quanto para download. Utilizar registro de callback para coletar resultado | == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro interno do servidor | | 404 | Comando ou roteador não encontrado | == Exemplos de Retorno == { "success": true } { "success": false, "message": "CPE não esta online!" } ==== Visualizar último log enviado de um roteador ==== ATENÇÂO! Use esta função após o comando de envio de log. == Formato da URL == /api/v2/device/lastlog/{ID do CPE} == Método HTTP == GET == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro interno do servidor | | 404 | Roteador não encontrado | == Exemplos de Retorno == { "success": true, "message": "Não existe log deste roteador" } 'Content-Encoding', 'gzip', 'Content-Type', 'text/plain' ==== Visualizar log de boot de um roteador ==== == Formato da URL == /api/v2/device/firstlog/{ID do CPE} == Método HTTP == GET == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro interno do servidor | | 404 | Roteador não encontrado | == Exemplos de Retorno == { "success": true, "message": "Não existe log deste roteador" } 'Content-Encoding', 'gzip', 'Content-Type', 'text/plain' ==== Consultar abertura de portas de um CPE Flashbox ==== == Formato da URL == /api/v2/device/portforward/{ID do CPE} == Método HTTP == GET == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Roteador não encontrado" } { "success": true, "landevices": [ { "mac": "f8:77:b8:ff:ff:ff", "port": [ 555 ], "dmz": true, "router_port": [ 444 ], "name": "", "has_dhcpv6": false }, { "mac": "30:fd:38:ff:ff:ff", "port": [ 777 ], "dmz": false, "router_port": [ 777 ], "name": "Chromecast", "has_dhcpv6": false } ] } ==== Configurar abertura de portas de um CPE Flashbox ==== == Formato da URL == /api/v2/device/portforward/{MAC do roteador} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | MAC do roteador | Endereço MAC do roteador que encontra-se na etiqueta do equipamento | [A-F]:[A-F]:[A-F]:[A-F]:[A-F]:[A-F] | Sim | == Exemplo do Body == { "content": [{ "mac": "30:fd:38:ff:ff:ff", "port": [777], "dmz": false, "router_port": [777] }] } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Error ao realizar parser do JSON" } { "success": true, "message": "" } ==== Consultar abertura de portas de um CPE TR-069 ==== == Formato da URL == /api/v2/device/portforwardtr069/{ID do CPE} == Método HTTP == GET == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Roteador não encontrado" } { "success": true, "content": [ { "_id": "63d2bfc3898b1a5fdcf2ae50", "external_port_start": 5000, "external_port_end": 5000, "ip": "192.168.18.50", "internal_port_start": 5000, "internal_port_end": 5000 }, { "_id": "63d2bfc3898b1a5fdcf2ae51", "external_port_start": 6000, "external_port_end": 6000, "ip": "192.168.18.60", "internal_port_start": 6000, "internal_port_end": 6000 }, { "_id": "63d2bfc3898b1a5fdcf2ae52", "external_port_start": 6600, "external_port_end": 6600, "ip": "192.168.18.60", "internal_port_start": 6600, "internal_port_end": 6600 } ], "wrongPortMapping": false, "compatibility": { "simpleSymmetric": true, "simpleAsymmetric": true, "rangeSymmetric": true, "rangeAsymmetric": false } } ==== Configurar abertura de portas de um CPE TR-069 ==== == Formato da URL == /api/v2/device/portforwardtr069/{ID do CPE} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Exemplo do Body == { "content": [ { "ip": "192.168.18.10", "external_port_start": "1010", "external_port_end": "1010", "internal_port_start": "1010", "internal_port_end": "1010" } ] } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Error ao realizar parser do JSON" } { "success": true, "message": "" } ==== Consultar lista de endereços para teste de ping ==== == Formato da URL == /api/v2/device/pinghostslist/{ID do CPE} == Método HTTP == GET == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Roteador não encontrado" } { "success": true, "ping_hosts_list": [ "www.google.com", "www.facebook.com", "www.instagram.com", "www.youtube.com", "www.terra.com.br" ] } ==== Configurar lista de endereços para teste de ping ==== == Formato da URL == /api/v2/device/pinghostslist/{ID do CPE} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ID do CPE | Endereço MAC ou Número serial localizado na etiqueta do CPE | String. Caracteres sempre maiúsculos | Sim | == Exemplo do Body == { "content": { "hosts": [ "www.google.com", "www.facebook.com", "www.instagram.com", "www.youtube.com", "www.terra.com.br", "www.g1.com" ] } } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Erro ao tratar JSON" } { "success": true, "hosts": [ "www.google.com", "www.facebook.com", "www.instagram.com", "www.youtube.com", "www.terra.com.br", "www.g1.com" ] } ==== Configurar estado de bloqueio do roteador LAN ==== == Formato da URL == /api/v2/device/landevice/block == Método HTTP == PUT == Exemplo do Body == { "id": "18:0D:2C:5E:37:00", "lanid": "34:fc:ef:fe:57:64", "isblocked": false } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": true } { "success": false, "message": "Erro ao buscar CPE (3093)" } ==== Configurar posicionamento GPS de um CPE ==== == Formato da URL == /api/v2/device/coordinates == Método HTTP == PUT == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | devices | Lista de roteadores, seguindo o formato descrito abaixo | Array | Sim | | devices.*.id | Identificador único do roteador, conforme listado no Flashman | String | Sim | | devices.*.latitude | Valor de latitude deste roteador | Número | Sim | | devices.*.longitude | Valor de longitude deste roteador | Número | Sim | | devices.*.preventAutoUpdate | Flag para prevenir atualizações de posicionamento pelos apps | Booleano | Sim | * Obs.: Os campos de id, latitude, longitude e preventAutoUpdate devem ser fornecidos para cada roteador dentro do Array == Exemplo do Body == {"devices":[{ "id": "18:0D:2C:5E:37:00", "latitude": 12.3456789, "longitude": 0.1234567, "preventAutoUpdate": true }, { "id": "AA:AA:AA:AA:AA:AA", "latitude": -22.222222", "longitude": -11.111111, "preventAutoUpdate": true }] } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro ao processar a requisição | Obs.: Caso somente algumas das edições falhem, o Flashman ainda assim retornará status 200, sendo necessário consultar o body da requisição para ver quantos e quais roteadores falharam na atualização dos campos == Exemplos de Retorno == { "success": true, "okCount": 2, "failCount": 0, "status": { "18:0D:2C:5E:37:00": "Sucesso", "AA:AA:AA:AA:AA:AA": "Sucesso" } } { "success": true, "okCount": 1, "failCount": 1, "status": { "18:0D:2C:5E:37:00": "Sucesso", "AA:AA:AA:AA:AA:AA": "Erro ao buscar a CPE" } } { "success": false, "okCount": 0, "failCount": 0, "status": {}, "message": "Campo 'devices' inválido" } ==== Consultar posicionamento GPS de um CPE ==== == Formato da URL == /api/v2/device/coordinates == Método HTTP == GET == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro ao processar a requisição | | 404 | Nenhuma CPE encontrada | ==== Consultar status de licença de CPE ==== == Formato da URL == /api/v2/device/license/get == Método HTTP == PUT == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | id | ID de CPE | String | Sim | == Exemplo do Body == { "id": "CC:CC:CC:CC:CC:CC", } { "id": "ZTEDGH1248DD82", } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro ao processar a requisição | == Exemplos de Retorno == { "success": true, "status": true // Licença ativa } { "success": false, "message": "JSON fora do formato" } ==== Alterar status de licenças de CPEs ==== == Formato da URL == /api/v2/device/license/set == Método HTTP == PUT == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | ids | Lista de IDs de CPEs ou um único ID de CPE | Array de Strings ou String | Sim | | block | Booleano para bloquear ou desbloquear as licença(s) dos IDs forncecidos | Booleano | Sim | == Exemplo do Body == { "ids": "CC:CC:CC:CC:CC:CC", "block": true } { "ids": ["AA:AA:AA:AA:AA:AA", "BB:BB:BB:BB:BB:BB"], "block": false } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro ao processar a requisição | == Exemplos de Retorno == { "success": true, } { "success": false, "message": "JSON fora do formato" } ==== Consultar callback para notificações de alteração de roteadores ==== == Formato da URL == /api/v2/device/traps/callback == Método HTTP == GET == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": true, "exists": true, "user": "admin", "url": "http://127.0.0.1:5555", "devicesCrud": [{ "url": "http://127.0.0.1:5555", "user": "admin" }, { "url": "http://127.0.0.1:8888", "user": "user" }, { "url": "http://127.0.0.1:9999", "user": "usuario123" }] } ==== Configurar callback para notificações de alteração de roteadores ==== == Formato da URL == /api/v2/device/traps/callback == Método HTTP == PUT == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | url | URL da callback para notificação de alteração | String | Sim | | user | Usuário usada para autenticação na URL | String | Não | | secret | Senha usada para autenticação na URL | String | Não | * Obs.: Caso a URL especificada já esteja registrada como uma callback no Flashman, somente serão atualizados o user e secret para aquela URL. Caso não esteja registrada, será adicionada uma nova entrada na lista de callbacks. == Exemplo do Body == { "url": "http://localhost:5555", "user": "admin", "secret": "1234" } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Error gravar dados na base" } { "success": true, "message": "Endereço salvo com sucesso", } ==== Deletar callback para notificações de alteração de roteadores ==== == Formato da URL == /api/v2/device/traps/callback == Método HTTP == DELETE == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | index | Índice a ser deletado da lista de callbacks registradas | Inteiro | Sim | * Obs.: O index pode ser consultado através de um GET, para consulta da lista atual == Exemplo do Body == { "index": 1 } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro processando a requisição | == Exemplos de Retorno == { "success": false, "message": "Não foi encontrado nenhum elemento para o índice passado" } { "success": true, "message": "Operação realizada com sucesso" } ===== Métodos para usuários ===== ==== Obter todos os usuários ==== == Formato da URL == /api/v2/user/get/all == Método HTTP == GET == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": true, "type": "success", "users": [ { "_id": "5d80dd2c04980000aef80ca2", "createdAt": "2019-09-17T13:18:36.111Z", "autoUpdate": true, "maxElementsPerPage": 50, "is_superuser": true, "name": "CarolinaNNN", "password": "$2a$05$MLUESjuUwMW1f5G80e/HjONjo8huRm3lITAVzWHFnsKLYYK3QhkXG", "__v": 137, "lastLogin": "2022-03-03T17:43:47.220Z", "visibleColumnsOnPage": [ 4, 5, 6, 7, 8, 10, 11, 12 ], "role": "Supervisão" }, { "_id": "5d9f72e78a02a80019961fca", "createdAt": "2019-10-03T21:49:30.748Z", "autoUpdate": true, "maxElementsPerPage": 10, "is_superuser": false, "name": "Rodrigo", "password": "$2a$05$kTy5rakI9kPb67dPAnWPhecKXv.7Osb2Y4Gj2w1m.xXEAIN2VUCsa", "role": "Supervisão", "__v": 4, "lastLogin": "2022-03-02T13:24:47.350Z", "visibleColumnsOnPage": [ 4, 5, 6, 7, 8, 10, 11, 12 ] } ] } ==== Editar usuário ==== == Formato da URL == /api/v2/user/edit/{Id do usuário} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | Id do usuário | String com chave identificadora de usuário (_id) | String | Sim | == Exemplo do Body == { "name": "teste", "password": "teste1234", "passwordack": "teste1234", "role": "Gerente" } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "type": "danger", "message": "Error gravar dados na base" } { "success": true, "type": "success", "message": "Editado com sucesso!" } ==== Criar usuário ==== == Formato da URL == /api/v2/user/new == Método HTTP == PUT == Exemplo do Body == { "name": "joao", "password": "teste1234", "role": "Gerente" } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "type": "danger", "message": "Error gravar dados na base" } { "success": true, "type": "success", "message": "Usuário criado com sucesso!" } ==== Remover usuário ==== == Formato da URL == /api/v2/user/del == Método HTTP == PUT == Exemplo do Body == { "ids": ["8sdu8sdhusdnc8sdc", "jsud8989a8s98asxnuas"], } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "type": "danger", "message": "Error gravar dados na base" } { "success": true, "type": "success", "message": "Usuário(s) deletado(s) com sucesso!" } ==== Consultar callback para notificações de alteração de usuários ==== == Formato da URL == /api/v2/user/traps/callback == Método HTTP == GET == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": true, "exists": true, "user": "admin", "url": "http://127.0.0.1:5555", "devicesCrud": [{ "url": "http://127.0.0.1:5555", "user": "admin" }, { "url": "http://127.0.0.1:8888", "user": "user" }, { "url": "http://127.0.0.1:9999", "user": "usuario123" }] } ==== Configurar callback para notificações de alteração de usuários ==== == Formato da URL == /api/v2/user/traps/callback == Método HTTP == PUT == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | url | URL da callback para notificação de alteração | String | Sim | | user | Usuário usada para autenticação na URL | String | Não | | secret | Senha usada para autenticação na URL | String | Não | * Obs.: Caso a URL especificada já esteja registrada como uma callback no Flashman, somente serão atualizados o user e secret para aquela URL. Caso não esteja registrada, será adicionada uma nova entrada na lista de callbacks. == Exemplo do Body == { "url": "http://localhost:5555", "user": "admin", "secret": "1234" } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Error gravar dados na base" } { "success": true, "message": "Endereço salvo com sucesso", } ==== Deletar callback para notificações de alteração de usuários ==== == Formato da URL == /api/v2/user/traps/callback == Método HTTP == DELETE == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | index | Índice a ser deletado da lista de callbacks registradas | Inteiro | Sim | * Obs.: O index pode ser consultado através de um GET, para consulta da lista atual == Exemplo do Body == { "index": 1 } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro processando a requisição | == Exemplos de Retorno == { "success": false, "message": "Não foi encontrado nenhum elemento para o índice passado" } { "success": true, "message": "Operação realizada com sucesso" } ===== Métodos para permissões ===== ==== Obter todas as classes de permissões ==== == Formato da URL == /api/v2/role/get/all == Método HTTP == GET == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": true, "type": "success", "roles": [ { "grantWifiInfo": 0, "grantPPPoEInfo": 0, "grantPassShow": false, "grantFirmwareUpgrade": false, "grantWanType": false, "grantDeviceId": false, "grantDeviceActions": false, "grantDeviceRemoval": false, "grantDeviceAdd": false, "grantMonitorManage": false, "grantFirmwareManage": false, "grantAPIAccess": false, "grantLOGAccess": false, "grantNotificationPopups": false, "grantLanEdit": true, "grantLanDevices": 2, "_id": "5b90a64a82e383001cff8sda3222336", "name": "Gerente", "__v": 0 } ] } ==== Editar classe de permissão ==== == Formato da URL == /api/v2/role/edit/{Id da classe de permissão} == Método HTTP == PUT == Formato da Requisição == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | Id da classe de permissão | String com chave identificadora da classe de permissão (_id) | String | Sim | == Exemplo do Body == { "grant-wifi-info": 0, "grant-pppoe-info": 0, "grant-pass-show": false, "grant-firmware-upgrade": false, "grant-wan-type": false, "grant-device-id": false, "grant-device-actions": false, "grant-device-removal": false, "grant-device-add": false, "grant-monitor-manage": false, "grant-firmware-manage": false, "grant-api-access": false, "grant-log-access": false, "grant-notification-popups": false, "grant-lan-edit": true, "grant-lan-devices": 2 } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "type": "danger", "message": "Erro ao editar classe." } { "success": true, "type": "success", "message": "Classe de permissões editada com sucesso!" } ==== Criar classe de permissão ==== == Formato da URL == /api/v2/role/new == Método HTTP == PUT == Exemplo do Body == { "name": "Teste", "grant-wifi-info": 0, "grant-pppoe-info": 0, "grant-pass-show": false, "grant-firmware-upgrade": false, "grant-wan-type": false, "grant-device-id": false, "grant-device-actions": false, "grant-device-removal": false, "grant-device-add": false, "grant-monitor-manage": false, "grant-firmware-manage": false, "grant-api-access": false, "grant-log-access": false, "grant-notification-popups": false, "grant-lan-edit": true, "grant-lan-devices": 2 } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "type": "danger", "message": "Error gravar dados na base" } { "success": true, "type": "success", "message": "Classe de permissões criada com sucesso!" } ==== Remover classe de permissão ==== == Formato da URL == /api/v2/role/del == Método HTTP == PUT == Exemplo do Body == { "names": ["Gerente", "Tecnico"], "ids": ["asdaoss8jx8sdasgdfgdasdas", "$saa88ajj2121bbshs"] } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "type": "danger", "message": "Error gravar dados na base" } { "success": true, "type": "success", "message": "Classes deletada(s) com sucesso!" } ==== Consultar callback para notificações de alteração de classe de permissões ==== == Formato da URL == /api/v2/role/traps/callback == Método HTTP == GET == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": true, "exists": true, "user": "admin", "url": "http://127.0.0.1:5555", "devicesCrud": [{ "url": "http://127.0.0.1:5555", "user": "admin" }, { "url": "http://127.0.0.1:8888", "user": "user" }, { "url": "http://127.0.0.1:9999", "user": "usuario123" }] } ==== Configurar callback para notificações de alteração de classe de permissões ==== == Formato da URL == /api/v2/role/traps/callback == Método HTTP == PUT == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | url | URL da callback para notificação de alteração | String | Sim | | user | Usuário usada para autenticação na URL | String | Não | | secret | Senha usada para autenticação na URL | String | Não | * Obs.: Caso a URL especificada já esteja registrada como uma callback no Flashman, somente serão atualizados o user e secret para aquela URL. Caso não esteja registrada, será adicionada uma nova entrada na lista de callbacks. == Exemplo do Body == { "url": "http://localhost:5555", "user": "admin", "secret": "1234" } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Error gravar dados na base" } { "success": true, "message": "Endereço salvo com sucesso", } ==== Deletar callback para notificações de alteração de classe de permissões ==== == Formato da URL == /api/v2/role/traps/callback == Método HTTP == DELETE == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | index | Índice a ser deletado da lista de callbacks registradas | Inteiro | Sim | * Obs.: O index pode ser consultado através de um GET, para consulta da lista atual == Exemplo do Body == { "index": 1 } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro processando a requisição | == Exemplos de Retorno == { "success": false, "message": "Não foi encontrado nenhum elemento para o índice passado" } { "success": true, "message": "Operação realizada com sucesso" } ===== Métodos para certificações ===== ==== Consultar callback para notificações de alteração de certificações ==== == Formato da URL == /api/v2/certification/traps/callback == Método HTTP == GET == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": true, "exists": true, "user": "admin", "url": "http://127.0.0.1:5555", "devicesCrud": [{ "url": "http://127.0.0.1:5555", "user": "admin" }, { "url": "http://127.0.0.1:8888", "user": "user" }, { "url": "http://127.0.0.1:9999", "user": "usuario123" }] } ==== Configurar callback para notificações de alteração de certificações ==== == Formato da URL == /api/v2/certification/traps/callback == Método HTTP == PUT == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | url | URL da callback para notificação de alteração | String | Sim | | user | Usuário usada para autenticação na URL | String | Não | | secret | Senha usada para autenticação na URL | String | Não | * Obs.: Caso a URL especificada já esteja registrada como uma callback no Flashman, somente serão atualizados o user e secret para aquela URL. Caso não esteja registrada, será adicionada uma nova entrada na lista de callbacks. == Exemplo do Body == { "url": "http://localhost:5555", "user": "admin", "secret": "1234" } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | == Exemplos de Retorno == { "success": false, "message": "Error gravar dados na base" } { "success": true, "message": "Endereço salvo com sucesso", } ==== Deletar callback para notificações de alteração de certificações ==== == Formato da URL == /api/v2/certification/traps/callback == Método HTTP == DELETE == Parâmetros do Body == ^ Parâmetro ^ Descrição ^ Formato ^ Obrigatório ^ | index | Índice a ser deletado da lista de callbacks registradas | Inteiro | Sim | * Obs.: O index pode ser consultado através de um GET, para consulta da lista atual == Exemplo do Body == { "index": 1 } == Retorno da Requisição == ^ Status Code ^ Descrição ^ | 200 | OK, comando executado com sucesso | | 500 | Erro processando a requisição | == Exemplos de Retorno == { "success": false, "message": "Não foi encontrado nenhum elemento para o índice passado" } { "success": true, "message": "Operação realizada com sucesso" }