Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
api_2.0_flashman [26/06/2019 00:52]
superuser [Informações]
api_2.0_flashman [01/11/2023 18:55] (atual)
superuser
Linha 2: Linha 2:
  
 **Versão da API:** 2.0 **Versão da API:** 2.0
 +
  
 **Documentação da versão anterior:** [[api_flashman|Acessar]] **Documentação da versão anterior:** [[api_flashman|Acessar]]
 +
  
 ===== Autenticação ===== ===== Autenticação =====
Linha 18: Linha 20:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​search{?​page=1}+/​api/​v2/​device/​search{?​page=1&​limit=10}
 </​code>​ </​code>​
  
Linha 31: Linha 33:
 ^ Parâmetro ^ Descrição ​                                                                            ^ Formato ​ ^ Obrigatório ^ ^ 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         | | 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âmetros do Body ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                  ^ Formato ​            ^ Obrigatório ​ ^ +^ Parâmetro ​          ​^ Descrição ​                                                  ^ Formato ​            ^ Obrigatório ​ ^ 
-| filter_list ​    ​| Lista com todos os filtros desejados ​                       | Array com Strings ​  | Sim          | +| 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 == == Exemplo do Body ==
Linha 43: Linha 50:
 <​code>​ <​code>​
 { {
-  "​filter_list": ​["​online""/ou", "offline"]+  "​filter_list":​ "​online,/​ou,offline", 
 +  ​"query_result_filter":​ "​-firstboot_log,​-lastboot_log"
 } }
 </​code>​ </​code>​
Linha 138: Linha 146:
             "​do_update":​ false,             "​do_update":​ false,
             "​do_update_parameters":​ false,             "​do_update_parameters":​ false,
-            "​lan_devices":​ [ 
-                { 
-                    "​is_blocked":​ false, 
-                    "​port":​ [], 
-                    "​router_port":​ [], 
-                    "​dmz":​ false, 
-                    "​ipv6":​ [], 
-                    "​dhcpv6":​ [], 
-                    "​last_seen":​ "​2019-06-25T19:​07:​10.917Z",​ 
-                    "​first_seen":​ "​2019-04-16T01:​58:​18.074Z",​ 
-                    "​_id":​ "​88888888888888888888",​ 
-                    "​mac":​ "​aa:​aa:​aa:​aa:​aa:​aa",​ 
-                    "​dhcp_name":​ "​Impressora",​ 
-                    "​conn_type":​ 1, 
-                    "​ip":​ "​192.168.42.244",​ 
-                    "​wifi_mode":​ "​N",​ 
-                    "​conn_speed":​ 65, 
-                    "​wifi_signal":​ -42, 
-                    "​wifi_snr":​ 50, 
-                    "​wifi_freq":​ 2.4 
-                }, 
-                { 
-                    "​is_blocked":​ false, 
-                    "​port":​ [], 
-                    "​router_port":​ [], 
-                    "​dmz":​ false, 
-                    "​ipv6":​ [ 
-                        "​2804:​7f1:​c080:​45e:​aaaa:​1b5f:​1579:​aaaa",​ 
-                        "​fe80::​aaaa:​f038:​d62d:​aaaa"​ 
-                    ], 
-                    "​dhcpv6":​ [], 
-                    "​last_seen":​ "​2019-06-25T04:​08:​05.672Z",​ 
-                    "​first_seen":​ "​2019-04-16T01:​58:​18.074Z",​ 
-                    "​_id":​ "​99999999999999999999999",​ 
-                    "​mac":​ "​ff:​ff:​ff:​ff:​ff:​ff",​ 
-                    "​dhcp_name":​ "​Galaxy AA", 
-                    "​conn_speed":​ 6, 
-                    "​conn_type":​ 1, 
-                    "​ip":​ "​192.168.42.254",​ 
-                    "​wifi_freq":​ 2.4, 
-                    "​wifi_mode":​ "​N",​ 
-                    "​wifi_signal":​ -92, 
-                    "​wifi_snr":​ 0 
-                } 
-            ], 
             "​apps":​ [             "​apps":​ [
                 {                 {
Linha 199: Linha 162:
             "​mqtt_secret":​ "​jsadshdajnsudshasjasawqqwass",​             "​mqtt_secret":​ "​jsadshdajnsudshasjasawqqwass",​
             "​lastboot_date":​ "​2019-06-23T17:​00:​33.768Z",​             "​lastboot_date":​ "​2019-06-23T17:​00:​33.768Z",​
-            "​lastboot_log":​ "",​ 
             "​ntp_status":​ "​0.000164",​             "​ntp_status":​ "​0.000164",​
             "​firstboot_date":​ "​2019-06-18T04:​38:​28.537Z",​             "​firstboot_date":​ "​2019-06-18T04:​38:​28.537Z",​
-            "​firstboot_log":​ "",​ 
             "​external_reference":​ {             "​external_reference":​ {
                 "​kind":​ "​Outro",​                 "​kind":​ "​Outro",​
Linha 237: Linha 198:
     ]     ]
 } }
 +</​code>​
 +
 +==== Consultar roteadores ====
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​device/​get
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +POST
 +</​code>​
 +
 +== 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 ==
 +
 +<​code>​
 +{
 +    "​filter_list":​ "​online,/​ou,​offline",​
 +    "​fields":​ "​_id,​use_tr069,​model"​
 +}
 +</​code>​
 +
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                                                                          ^
 +| 200         | OK. Retorna as informações dos roteadores encontrados ​                              |
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +[
 +    {
 +        "​_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"​
 +    }
 +]
 </​code>​ </​code>​
  
Linha 245: Linha 261:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​update/​{MAC do roteador}+/​api/​v2/​device/​update/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 256: Linha 272:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                            ​^ Obrigatório ^ +^ 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         ​|+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 == == Retorno da Requisição ==
Linha 275: Linha 291:
 <​code>​ <​code>​
 { {
-  "​success":​ true, 
   "​external_reference":​ {   "​external_reference":​ {
-      "​kind":​ '​CPF',​+      "​kind":​ '​CPF', ​ // Poderá ser CPF, CNPJ ou Outro
       "​data":​ '​123.456.789-00'​       "​data":​ '​123.456.789-00'​
   },   },
   "​apps":​ [],   "​apps":​ [],
-  _id: '​11:​11:​11:​11:​11:​11',​+  _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',​   "​model":​ '​TL-MR3020V1',​
   "​release":​ '​0004-AIX',​   "​release":​ '​0004-AIX',​
   "​pppoe_user":​ '',​   "​pppoe_user":​ '',​
   "​pppoe_password":​ '',​   "​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_ssid":​ '​TesteSSID',​
   "​wifi_password":​ '​SenhaWifi',​   "​wifi_password":​ '​SenhaWifi',​
   "​wifi_channel":​ '​auto',​   "​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,​   "​last_contact":​ 2018-01-01T03:​00:​00.000Z,​
   "​do_update":​ false,   "​do_update":​ false,
   "​do_update_parameters":​ true,   "​do_update_parameters":​ true,
-  "​connection_type":​ '​dhcp',​ +  "​connection_type":​ '​dhcp', ​// Poderá ser pppoe ou dhcp 
-  "​__v":​ 0, +  "​ip":​ '​5.5.5.5', ​// Informação de IP do CPE visível pelo servidor do Flashman 
-  "​ip":​ '​5.5.5.5',​ +  "​wan_ip":​ '​10.10.10.10'​, // Informação de IP da WAN enviado pelo CPE 
-  "​wan_ip":​ '​10.10.10.10'​+  "​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
 } }
 </​code>​ </​code>​
Linha 304: Linha 493:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​update/​{MAC do roteador}+/​api/​v2/​device/​update/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 315: Linha 504:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                            ​^ Obrigatório ^ +^ 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         ​|+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âmetros do Body ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                  ^ Formato ​ ^ Obrigatório ​ ^ +^ Parâmetro ​           ^ Descrição ​                                                  ^ Formato  ​| **Valores** ​                                                                             ​^ Obrigatório ​ ^ 
-| pppoe_user ​     | Usuário PPPoE                                               | String ​  | Não          | +| pppoe_user ​          ​| Usuário PPPoE                                               | String ​  |                                                                                          ​| Não          | 
-| pppoe_password ​ | Senha do 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_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_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 ​  | 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 == == Exemplo do Body ==
Linha 397: Linha 608:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​update/​{MAC do roteador}/{Release}+/​api/​v2/​device/​update/​{ID do CPE}/{Release}
 </​code>​ </​code>​
  
Linha 408: Linha 619:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​       ^ Descrição ​                                                           ^ Formato ​                             ^ Obrigatório ​ ^ +^ 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          | +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          |+| Release ​   | Identificador de release do firmware. Exemplo: 0001-fab ​     | String ​                               | Sim          |
  
 == Parâmetros do Body == == Parâmetros do Body ==
Linha 450: Linha 661:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​delete/​{MAC do roteador}+/​api/​v2/​device/​delete/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 461: Linha 672:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                            ​^ Obrigatório ^ +^ 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         ​|+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 == == Retorno da Requisição ==
Linha 492: Linha 703:
 == Parâmetros do Body == == Parâmetros do Body ==
  
-^ Parâmetro ​      ^ Descrição ​                                                          ​^ Formato ​                            ​^ Obrigatório ​ ^ +^ 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          | +| 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          | +| release ​        | Identificador de release do firmware. Exemplo: 0001-fab ​             | String ​                              ​| Não          | 
-| pppoe_user ​     | Usuário PPPoE                                                       ​| String ​                             | Não          | +| pppoe_user ​     | Usuário PPPoE                                                        | String ​                              ​| Não          | 
-| pppoe_password ​ | Senha do 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_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_password ​  | Senha do ponto de acesso sem fio do usuário ​                         | String ​                              ​| Não          | 
-| wifi_channel ​   | Canal do 802.11 ​                                                    ​| 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 == == Exemplo do Body ==
Linha 513: Linha 725:
     "​wifi_ssid":​ "​FlashMan-AP-Teste",​     "​wifi_ssid":​ "​FlashMan-AP-Teste",​
     "​wifi_password":​ "​senhateste",​     "​wifi_password":​ "​senhateste",​
-    "​wifi_channel":​ "​auto"​+    "​wifi_channel":​ "auto", 
 +    "​wifi_band":​ "​auto",​ 
 +    "​wifi_mode":​ "11g"
   }   }
 } }
Linha 553: Linha 767:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​command/​{MAC do roteador}/{Comando}+/​api/​v2/​device/​command/​{ID do CPE}/{Comando}
 </​code>​ </​code>​
  
Linha 564: Linha 778:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                                ​^ Obrigatório ^ +^ 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         ​+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 ​   | Tipo de comando a ser desempenhado pelo roteador Flashbox ​   | Veja os comandos suportados logo abaixo ​ | Sim          |
  
-^ Comando ​ ^ Descrição ​                                                                                                    ​+^ Comando ​    ​^ Descrição ​                                                                                                                                                              ​
-| boot     ​| Reiniciar roteador Flashbox ​                                                                                  ​+| boot        | Reiniciar roteador Flashbox ​                                                                                                                                            | 
-| rstapp ​  ​| Apagar senha de login do aplicativo do usuário final                                                          +| log         | Envia o de log  do roteador para o Flashman. Para ver o log, use o comando de visualizar último log                                                                     | 
-rstmqtt ​ | Cuidado! Gera um novo token MQTT. Apenas use esse comando após a remoção do cadastro do roteador no Flashman ​ | +| onlinedevs ​ | Inicia a coleta de aparelhos conectados ao CPE                                                                                                                          | 
-log      ​Envia o de log  ​do ​roteador ​para o FlashmanPara ver log, use o comando ​de visualizar último log           |+| 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 roteador está online e conectadoTambém coleta ​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 == == Retorno da Requisição ==
Linha 584: Linha 807:
 { {
   "​success":​ true   "​success":​ true
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "CPE não esta online!"​
 } }
 </​code>​ </​code>​
Linha 594: Linha 823:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​lastlog/​{MAC do roteador}+/​api/​v2/​device/​lastlog/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 605: Linha 834:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                                ​^ Obrigatório ^ +^ 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         ​|+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 == == Retorno da Requisição ==
Linha 632: Linha 861:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​firstlog/​{MAC do roteador}+/​api/​v2/​device/​firstlog/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 643: Linha 872:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                                ​^ Obrigatório ^ +^ 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         ​|+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 == == Retorno da Requisição ==
Linha 665: Linha 894:
 </​code>​ </​code>​
  
-==== Consultar abertura de portas de um roteador ​====+==== Consultar abertura de portas de um CPE Flashbox ​====
  
 == Formato da URL == == Formato da URL ==
  
 <​code>​ <​code>​
-/​api/​v2/​device/​portforward/​{MAC do roteador}+/​api/​v2/​device/​portforward/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 681: Linha 910:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                                ​^ Obrigatório ^ +^ 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         ​|+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 == == Retorno da Requisição ==
Linha 728: Linha 957:
 </​code>​ </​code>​
  
-==== Configurar abertura de portas de um roteador ​====+==== Configurar abertura de portas de um CPE Flashbox ​====
  
 == Formato da URL == == Formato da URL ==
Linha 750: Linha 979:
 <​code>​ <​code>​
 { {
- "​content":​"[{ +    ​"​content":​ [{ 
- \"mac\":\"​30:​fd:​38:​ff:​ff:​ff\", +        "​mac":​ "​30:​fd:​38:​ff:​ff:​ff",​ 
- \"port\":​[777],​ +        "​port":​ [777], 
- \"dmz\":​false,​ +        "​dmz":​ false, 
- \"​router_port\":​[777] +        "​router_port":​ [777] 
-  +    }] 
- }]"+} 
 +</​code>​ 
 + 
 +== Retorno da Requisição == 
 +^ Status Code ^ Descrição ​                            ^ 
 +| 200         | OK, comando executado com sucesso ​    |  
 + 
 +== Exemplos de Retorno == 
 +<​code>​ 
 +
 +    "​success":​ false, 
 +    "​message":​ "Error ao realizar parser do JSON"​ 
 +
 +</​code>​ 
 +<​code>​ 
 +
 +    "​success":​ true, 
 +    "​message":​ ""​ 
 +
 +</​code>​ 
 +==== Consultar abertura de portas de um CPE TR-069 ==== 
 + 
 +== Formato da URL == 
 + 
 +<​code>​ 
 +/​api/​v2/​device/​portforwardtr069/​{ID do CPE} 
 +</​code>​ 
 + 
 +== Método HTTP == 
 + 
 +<​code>​ 
 +GET 
 +</​code>​ 
 + 
 +== 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 == 
 +<​code>​ 
 +
 +    "​success":​ false, 
 +    "​message":​ "​Roteador não encontrado"​ 
 +
 +</​code>​ 
 + 
 +<​code>​ 
 +
 +  "​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 
 +  } 
 +
 +</​code>​ 
 + 
 +==== Configurar abertura de portas de um CPE TR-069 ==== 
 + 
 +== Formato da URL == 
 + 
 +<​code>​ 
 +/​api/​v2/​device/​portforwardtr069/​{ID do CPE} 
 +</​code>​ 
 + 
 +== Método HTTP == 
 + 
 +<​code>​ 
 +PUT 
 +</​code>​ 
 + 
 +== 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 == 
 +<​code>​ 
 +
 +  "​content":​ [ 
 +    { 
 +      "​ip":​ "​192.168.18.10",​ 
 +      "​external_port_start":​ "​1010",​ 
 +      "​external_port_end":​ "​1010",​ 
 +      "​internal_port_start":​ "​1010",​ 
 +      "​internal_port_end":​ "​1010"​ 
 +    } 
 +  ]
 } }
 </​code>​ </​code>​
Linha 783: Linha 1132:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​pinghostslist/​{MAC do roteador}+/​api/​v2/​device/​pinghostslist/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 794: Linha 1143:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                                ​^ Obrigatório ^ +^ 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         ​|+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 == == Retorno da Requisição ==
Linha 827: Linha 1176:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​pinghostslist/​{MAC do roteador}+/​api/​v2/​device/​pinghostslist/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 838: Linha 1187:
 == Formato da Requisição == == Formato da Requisição ==
  
-^ Parâmetro ​      ​^ Descrição ​                                                          ​^ Formato ​                                ​^ Obrigatório ^ +^ 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         ​|+ID do CPE  ​| Endereço MAC ou Número serial localizado ​na etiqueta do CPE  ​String. Caracteres sempre maiúsculos  ​| Sim          |
  
 == Exemplo do Body == == Exemplo do Body ==
 <​code>​ <​code>​
 { {
- "​content":​"+    ​"​content":​ { 
- \"hosts\":[\"​www.google.com\", +        "​hosts":​ [ 
-            \"​www.facebook.com\", +            ​"​www.google.com",​ 
-            \"​www.instagram.com\", +            "​www.facebook.com",​ 
-            \"​www.youtube.com\", +            "​www.instagram.com",​ 
-            \"​www.terra.com.br\", +            "​www.youtube.com",​ 
-            \"​www.g1.com\+            "​www.terra.com.br",​ 
- ]}"+            "​www.g1.com"​ 
 +        ] 
 +    ​}
 } }
 </​code>​ </​code>​
Linha 863: Linha 1214:
 { {
     "​success":​ false,     "​success":​ false,
-    "​message":​ "Error ao realizar parser do JSON"+    "​message":​ "Erro ao tratar ​JSON"
 } }
 </​code>​ </​code>​
Linha 877: Linha 1228:
         "​www.g1.com"​         "​www.g1.com"​
     ]     ]
 +}
 +</​code>​
 +
 +==== Configurar estado de bloqueio do roteador LAN  ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​device/​landevice/​block
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +PUT
 +</​code>​
 +
 +== Exemplo do Body ==
 +<​code>​
 +{
 +    "​id":​ "​18:​0D:​2C:​5E:​37:​00",​
 +    "​lanid":​ "​34:​fc:​ef:​fe:​57:​64",​
 +    "​isblocked":​ false
 +}
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​success":​ true
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "Erro ao buscar CPE (3093)"​
 +}
 +</​code>​
 +
 +==== Configurar posicionamento GPS de um CPE ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​device/​coordinates
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +PUT
 +</​code>​
 +
 +== 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 ==
 +<​code>​
 +{"​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
 +}]
 +}
 +</​code>​
 +
 +== 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 ==
 +<​code>​
 +{
 +    "​success":​ true,
 +    "​okCount":​ 2,
 +    "​failCount":​ 0,
 +    "​status":​ {
 +        "​18:​0D:​2C:​5E:​37:​00":​ "​Sucesso",​
 +        "​AA:​AA:​AA:​AA:​AA:​AA":​ "​Sucesso"​
 +    }
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​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"
 +    }
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​okCount":​ 0,
 +    "​failCount":​ 0,
 +    "​status":​ {},
 +    "​message":​ "Campo '​devices'​ inválido"​
 +}
 +</​code>​
 +
 +==== Consultar posicionamento GPS de um CPE ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​device/​coordinates
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +GET
 +</​code>​
 +
 +== 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 ==
 +
 +<​code>​
 +/​api/​v2/​device/​license/​get
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +PUT
 +</​code>​
 +
 +== Parâmetros do Body ==
 +
 +^ Parâmetro ​                  ^ Descrição ​                                                              ^ Formato ​                   ^ Obrigatório ​ ^
 +| id                          | ID de CPE                                                               | String ​                    | Sim          |
 +
 +== Exemplo do Body ==
 +<​code>​
 +{
 +    "​id":​ "​CC:​CC:​CC:​CC:​CC:​CC",​
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​id":​ "​ZTEDGH1248DD82",​
 +}
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +| 500         | Erro ao processar a requisição ​       | 
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​success":​ true,
 +    "​status":​ true // Licença ativa
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "JSON fora do formato"​
 +}
 +</​code>​
 +
 +==== Alterar status de licenças de CPEs ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​device/​license/​set
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +PUT
 +</​code>​
 +
 +== 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 ==
 +<​code>​
 +{
 +    "​ids":​ "​CC:​CC:​CC:​CC:​CC:​CC",​
 +    "​block":​ true
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​ids":​ ["​AA:​AA:​AA:​AA:​AA:​AA",​ "​BB:​BB:​BB:​BB:​BB:​BB"​],​
 +    "​block":​ false
 +}
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +| 500         | Erro ao processar a requisição ​       | 
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​success":​ true,
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "JSON fora do formato"​
 +}
 +</​code>​
 +
 +==== Consultar callback para notificações de alteração de roteadores ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​device/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +GET
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​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"​
 +    }]
 } }
 </​code>​ </​code>​
Linha 893: Linha 1525:
 PUT PUT
 </​code>​ </​code>​
 +
 +== 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 == == Exemplo do Body ==
 <​code>​ <​code>​
 { {
- "​url":​ "​http://​localhost:​5555",​ +  ​"​url":​ "​http://​localhost:​5555",​ 
- "​user":​ "​admin",​ +  "​user":​ "​admin",​ 
- "​secret":​ "​1234"​+  "​secret":​ "​1234"​
 } }
 </​code>​ </​code>​
Linha 918: Linha 1559:
     "​success":​ true,     "​success":​ true,
     "​message":​ "​Endereço salvo com sucesso",​     "​message":​ "​Endereço salvo com sucesso",​
 +}
 +</​code>​
 +
 +==== Deletar callback para notificações de alteração de roteadores ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​device/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +DELETE
 +</​code>​
 +
 +== 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 ==
 +<​code>​
 +{
 +  "​index":​ 1
 +}
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +| 500         | Erro processando a requisição ​        ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "Não foi encontrado nenhum elemento para o índice passado"​
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ true,
 +    "​message":​ "​Operação realizada com sucesso"​
 } }
 </​code>​ </​code>​
Linha 948: Linha 1636:
     "​users":​ [     "​users":​ [
         {         {
-            "​createdAt":​ "2018-06-29T22:07:00.644Z",+            ​"​_id":​ "​5d80dd2c04980000aef80ca2",​ 
 +            ​"​createdAt":​ "2019-09-17T13:18:36.111Z",
             "​autoUpdate":​ true,             "​autoUpdate":​ true,
-            "​maxElementsPerPage": ​10,+            "​maxElementsPerPage": ​50,
             "​is_superuser":​ true,             "​is_superuser":​ true,
-            ​"​_id":​ "​5b36ad85f60f0d001c432344",​ +            "​name":​ "CarolinaNNN", 
-            ​"​name":​ "admin", +            "​password":​ "$2a$05$MLUESjuUwMW1f5G80e/​HjONjo8huRm3lITAVzWHFnsKLYYK3QhkXG", 
-            "​password":​ "$34fdasxjasjh89a8s98", +            "​__v": ​137
-            "​__v": ​0+            "​lastLogin":​ "2022-03-03T17:43:47.220Z",​ 
-            "​lastLogin":​ "2019-06-25T18:40:57.264Z"+            "​visibleColumnsOnPage":​ [ 
 +                4, 
 +                5, 
 +                6, 
 +                7, 
 +                8, 
 +                10, 
 +                11, 
 +                12 
 +            ], 
 +            "​role":​ "​Supervisão"
         },         },
         {         {
-            "​createdAt":​ "2019-05-06T14:59:07.881Z",+            ​"​_id":​ "​5d9f72e78a02a80019961fca",​ 
 +            ​"​createdAt":​ "2019-10-03T21:49:30.748Z",
             "​autoUpdate":​ true,             "​autoUpdate":​ true,
             "​maxElementsPerPage":​ 10,             "​maxElementsPerPage":​ 10,
             "​is_superuser":​ false,             "​is_superuser":​ false,
-            ​"​_id":​ "​5cd0520736e947001603dscc",​ +            "​name":​ "Rodrigo", 
-            ​"​name":​ "teste", +            "​password":​ "$2a$05$kTy5rakI9kPb67dPAnWPhecKXv.7Osb2Y4Gj2w1m.xXEAIN2VUCsa", 
-            "​password":​ "$2a$08ysbsisj88snakklsns", +            "​role":​ "Supervisão", 
-            "​role":​ "Gerente", +            "​__v": ​4
-            "​__v": ​0+            "​lastLogin":​ "2022-03-02T13:24:47.350Z"
-            "​lastLogin":​ "2019-05-16T02:21:25.930Z"+            "​visibleColumnsOnPage":​ [ 
 +                4, 
 +                5, 
 +                6, 
 +                7, 
 +                8, 
 +                10, 
 +                11, 
 +                12 
 +            ]
         }         }
     ]     ]
Linha 996: Linha 1705:
 <​code>​ <​code>​
 { {
- "​name":​ "​teste",​ +  ​"​name":​ "​teste",​ 
- "​password":​ "​teste1234",​ +  "​password":​ "​teste1234",​ 
- "​passwordack":​ "​teste1234",​ +  "​passwordack":​ "​teste1234",​ 
- "​role":​ "​Gerente"​+  "​role":​ "​Gerente"​
 } }
 </​code>​ </​code>​
Linha 1040: Linha 1749:
 <​code>​ <​code>​
 { {
- "​name":​ "​joao",​ +  ​"​name":​ "​joao",​ 
- "​password":​ "​teste1234",​ +  "​password":​ "​teste1234",​ 
- "​role":​ "​Gerente"​+  "​role":​ "​Gerente"​
 } }
 </​code>​ </​code>​
Linha 1077: Linha 1786:
  
 <​code>​ <​code>​
-DELETE+PUT
 </​code>​ </​code>​
  
Linha 1083: Linha 1792:
 <​code>​ <​code>​
 { {
- "​ids":​ ["​8sdu8sdhusdnc8sdc",​ "​jsud8989a8s98asxnuas"​],​+  ​"​ids":​ ["​8sdu8sdhusdnc8sdc",​ "​jsud8989a8s98asxnuas"​],​
 } }
 </​code>​ </​code>​
Linha 1104: Linha 1813:
     "​type":​ "​success",​     "​type":​ "​success",​
     "​message":​ "​Usuário(s) deletado(s) com sucesso!"​     "​message":​ "​Usuário(s) deletado(s) com sucesso!"​
 +}
 +</​code>​
 +
 +==== Consultar callback para notificações de alteração de usuários ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​user/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +GET
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​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"​
 +    }]
 } }
 </​code>​ </​code>​
Linha 1120: Linha 1867:
 PUT PUT
 </​code>​ </​code>​
 +
 +== 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 == == Exemplo do Body ==
 <​code>​ <​code>​
 { {
- "​url":​ "​http://​localhost:​5555",​ +  ​"​url":​ "​http://​localhost:​5555",​ 
- "​user":​ "​admin",​ +  "​user":​ "​admin",​ 
- "​secret":​ "​1234"​+  "​secret":​ "​1234"​
 } }
 </​code>​ </​code>​
Linha 1145: Linha 1901:
     "​success":​ true,     "​success":​ true,
     "​message":​ "​Endereço salvo com sucesso",​     "​message":​ "​Endereço salvo com sucesso",​
 +}
 +</​code>​
 +
 +==== Deletar callback para notificações de alteração de usuários ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​user/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +DELETE
 +</​code>​
 +
 +== 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 ==
 +<​code>​
 +{
 +  "​index":​ 1
 +}
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +| 500         | Erro processando a requisição ​        ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "Não foi encontrado nenhum elemento para o índice passado"​
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ true,
 +    "​message":​ "​Operação realizada com sucesso"​
 } }
 </​code>​ </​code>​
Linha 1150: Linha 1953:
 ===== Métodos para permissões ===== ===== Métodos para permissões =====
  
-==== Obter todos as classes de permissões ====+==== Obter todas as classes de permissões ====
  
 == Formato da URL == == Formato da URL ==
Linha 1328: Linha 2131:
  
 <​code>​ <​code>​
-DELETE+PUT
 </​code>​ </​code>​
  
Linha 1335: Linha 2138:
 { {
         "​names":​ ["​Gerente",​ "​Tecnico"​],​         "​names":​ ["​Gerente",​ "​Tecnico"​],​
- "​ids":​ ["​asdaoss8jx8sdasgdfgdasdas",​ "​$saa88ajj2121bbshs"​]+  ​"​ids":​ ["​asdaoss8jx8sdasgdfgdasdas",​ "​$saa88ajj2121bbshs"​]
 } }
 </​code>​ </​code>​
Linha 1356: Linha 2159:
     "​type":​ "​success",​     "​type":​ "​success",​
     "​message":​ "​Classes deletada(s) com sucesso!"​     "​message":​ "​Classes deletada(s) com sucesso!"​
 +}
 +</​code>​
 +
 +==== Consultar callback para notificações de alteração de classe de permissões ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​role/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +GET
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​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"​
 +    }]
 } }
 </​code>​ </​code>​
Linha 1372: Linha 2213:
 PUT PUT
 </​code>​ </​code>​
 +
 +== 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 == == Exemplo do Body ==
 <​code>​ <​code>​
 { {
- "​url":​ "​http://​localhost:​5555",​ +  ​"​url":​ "​http://​localhost:​5555",​ 
- "​user":​ "​admin",​ +  "​user":​ "​admin",​ 
- "​secret":​ "​1234"​+  "​secret":​ "​1234"​
 } }
 </​code>​ </​code>​
Linha 1399: Linha 2249:
 } }
 </​code>​ </​code>​
 +
 +==== Deletar callback para notificações de alteração de classe de permissões ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​role/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +DELETE
 +</​code>​
 +
 +== 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 ==
 +<​code>​
 +{
 +  "​index":​ 1
 +}
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +| 500         | Erro processando a requisição ​        ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "Não foi encontrado nenhum elemento para o índice passado"​
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ true,
 +    "​message":​ "​Operação realizada com sucesso"​
 +}
 +</​code>​
 +
 +===== Métodos para certificações =====
 +
 +==== Consultar callback para notificações de alteração de certificações ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​certification/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +GET
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​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"​
 +    }]
 +}
 +</​code>​
 +
 +==== Configurar callback para notificações de alteração de certificações ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​certification/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +PUT
 +</​code>​
 +
 +== 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 ==
 +<​code>​
 +{
 +  "​url":​ "​http://​localhost:​5555",​
 +  "​user":​ "​admin",​
 +  "​secret":​ "​1234"​
 +}
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "Error gravar dados na base"
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ true,
 +    "​message":​ "​Endereço salvo com sucesso",​
 +}
 +</​code>​
 +
 +==== Deletar callback para notificações de alteração de certificações ====
 +
 +== Formato da URL ==
 +
 +<​code>​
 +/​api/​v2/​certification/​traps/​callback
 +</​code>​
 +
 +== Método HTTP ==
 +
 +<​code>​
 +DELETE
 +</​code>​
 +
 +== 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 ==
 +<​code>​
 +{
 +  "​index":​ 1
 +}
 +</​code>​
 +
 +== Retorno da Requisição ==
 +^ Status Code ^ Descrição ​                            ^
 +| 200         | OK, comando executado com sucesso ​    ​| ​
 +| 500         | Erro processando a requisição ​        ​| ​
 +
 +== Exemplos de Retorno ==
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "Não foi encontrado nenhum elemento para o índice passado"​
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ true,
 +    "​message":​ "​Operação realizada com sucesso"​
 +}
 +</​code>​
 +