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
Última revisão Ambos lados da revisão seguinte
api_2.0_flashman [26/06/2019 00:44]
superuser [Criar classe de permissão]
api_2.0_flashman [31/08/2023 20:09]
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]]
 +
  
 ===== Autenticação ===== ===== Autenticação =====
Linha 16: Linha 20:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​search{?​page=1}+/​api/​v2/​device/​search{?​page=1&​limit=10}
 </​code>​ </​code>​
  
Linha 29: 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 41: Linha 50:
 <​code>​ <​code>​
 { {
-  "​filter_list": ​["​online""/ou", "offline"]+  "​filter_list":​ "​online,/​ou,offline", 
 +  ​"query_result_filter":​ "​-firstboot_log,​-lastboot_log"
 } }
 </​code>​ </​code>​
Linha 136: 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 197: 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 235: 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 243: Linha 261:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​update/​{MAC do roteador}+/​api/​v2/​device/​update/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 254: 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 273: 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 302: Linha 493:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​update/​{MAC do roteador}+/​api/​v2/​device/​update/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 313: 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                | Não          | 
 +| 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 395: Linha 608:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​update/​{MAC do roteador}/{Release}+/​api/​v2/​device/​update/​{ID do CPE}/{Release}
 </​code>​ </​code>​
  
Linha 406: 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 448: Linha 661:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​delete/​{MAC do roteador}+/​api/​v2/​device/​delete/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 459: 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 490: 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 511: 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 551: Linha 767:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​command/​{MAC do roteador}/{Comando}+/​api/​v2/​device/​command/​{ID do CPE}/{Comando}
 </​code>​ </​code>​
  
Linha 562: 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 582: Linha 807:
 { {
   "​success":​ true   "​success":​ true
 +}
 +</​code>​
 +<​code>​
 +{
 +    "​success":​ false,
 +    "​message":​ "CPE não esta online!"​
 } }
 </​code>​ </​code>​
Linha 592: Linha 823:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​lastlog/​{MAC do roteador}+/​api/​v2/​device/​lastlog/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 603: 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 630: Linha 861:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​firstlog/​{MAC do roteador}+/​api/​v2/​device/​firstlog/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 641: 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 663: 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 679: 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 726: 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 748: 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 781: Linha 1132:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​pinghostslist/​{MAC do roteador}+/​api/​v2/​device/​pinghostslist/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 792: 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 825: Linha 1176:
  
 <​code>​ <​code>​
-/​api/​v2/​device/​pinghostslist/​{MAC do roteador}+/​api/​v2/​device/​pinghostslist/​{ID do CPE}
 </​code>​ </​code>​
  
Linha 836: 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 861: Linha 1214:
 { {
     "​success":​ false,     "​success":​ false,
-    "​message":​ "Error ao realizar parser do JSON"+    "​message":​ "Erro ao tratar ​JSON"
 } }
 </​code>​ </​code>​
Linha 875: 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 891: 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 916: 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 942: Linha 1632:
 <​code>​ <​code>​
 { {
 +    "​success":​ true,
     "​type":​ "​success",​     "​type":​ "​success",​
     "​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 993: Linha 1705:
 <​code>​ <​code>​
 { {
- "​name":​ "​teste",​ +  ​"​name":​ "​teste",​ 
- "​password":​ "​teste1234",​ +  "​password":​ "​teste1234",​ 
- "​passwordack":​ "​teste1234",​ +  "​passwordack":​ "​teste1234",​ 
- "​role":​ "​Gerente"​+  "​role":​ "​Gerente"​
 } }
 </​code>​ </​code>​
Linha 1007: Linha 1719:
 <​code>​ <​code>​
 { {
 +    "​success":​ false,
     "​type":​ "​danger",​     "​type":​ "​danger",​
     "​message":​ "Error gravar dados na base"     "​message":​ "Error gravar dados na base"
Linha 1013: Linha 1726:
 <​code>​ <​code>​
 { {
 +    "​success":​ true,
     "​type":​ "​success",​     "​type":​ "​success",​
     "​message":​ "​Editado com sucesso!"​     "​message":​ "​Editado com sucesso!"​
Linha 1035: Linha 1749:
 <​code>​ <​code>​
 { {
- "​name":​ "​joao",​ +  ​"​name":​ "​joao",​ 
- "​password":​ "​teste1234",​ +  "​password":​ "​teste1234",​ 
- "​role":​ "​Gerente"​+  "​role":​ "​Gerente"​
 } }
 </​code>​ </​code>​
Linha 1048: Linha 1762:
 <​code>​ <​code>​
 { {
 +    "​success":​ false,
     "​type":​ "​danger",​     "​type":​ "​danger",​
     "​message":​ "Error gravar dados na base"     "​message":​ "Error gravar dados na base"
Linha 1054: Linha 1769:
 <​code>​ <​code>​
 { {
 +    "​success":​ true,
     "​type":​ "​success",​     "​type":​ "​success",​
     "​message":​ "​Usuário criado com sucesso!"​     "​message":​ "​Usuário criado com sucesso!"​
Linha 1070: Linha 1786:
  
 <​code>​ <​code>​
-DELETE+PUT
 </​code>​ </​code>​
  
Linha 1076: Linha 1792:
 <​code>​ <​code>​
 { {
- "​ids":​ ["​8sdu8sdhusdnc8sdc",​ "​jsud8989a8s98asxnuas"​],​+  ​"​ids":​ ["​8sdu8sdhusdnc8sdc",​ "​jsud8989a8s98asxnuas"​],​
 } }
 </​code>​ </​code>​
Linha 1087: Linha 1803:
 <​code>​ <​code>​
 { {
 +    "​success":​ false,
     "​type":​ "​danger",​     "​type":​ "​danger",​
     "​message":​ "Error gravar dados na base"     "​message":​ "Error gravar dados na base"
Linha 1093: Linha 1810:
 <​code>​ <​code>​
 { {
 +    "​success":​ true,
     "​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 1111: 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 1136: 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 1141: 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 1162: Linha 1974:
 <​code>​ <​code>​
 { {
 +    "​success":​ true,
     "​type":​ "​success",​     "​type":​ "​success",​
     "​roles":​ [     "​roles":​ [
Linha 1237: Linha 2050:
 <​code>​ <​code>​
 { {
 +    "​success":​ false,
     "​type":​ "​danger",​     "​type":​ "​danger",​
     "​message":​ "Erro ao editar classe."​     "​message":​ "Erro ao editar classe."​
Linha 1243: Linha 2057:
 <​code>​ <​code>​
 { {
 +    "​success":​ true,
     "​type":​ "​success",​     "​type":​ "​success",​
     "​message":​ "​Classe de permissões editada com sucesso!"​     "​message":​ "​Classe de permissões editada com sucesso!"​
Linha 1316: Linha 2131:
  
 <​code>​ <​code>​
-DELETE+PUT
 </​code>​ </​code>​
  
Linha 1323: Linha 2138:
 { {
         "​names":​ ["​Gerente",​ "​Tecnico"​],​         "​names":​ ["​Gerente",​ "​Tecnico"​],​
- "​ids":​ ["​asdaoss8jx8sdasgdfgdasdas",​ "​$saa88ajj2121bbshs"​]+  ​"​ids":​ ["​asdaoss8jx8sdasgdfgdasdas",​ "​$saa88ajj2121bbshs"​]
 } }
 </​code>​ </​code>​
Linha 1344: 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 1360: 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 1387: 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>​
 +