A seguir, estão os detalhes das operações de integração que resultarão em chamadas para a API da M2M, referentes as mudanças nos dispositivos ou ao cadastro dos pontos no sistema da Exati. Os detalhes desta seção foram descritos com base na documentação fornecida pela M2M de sua própria API, denominada Nox Manager.Autenticação#
Processo de verificação da identidade do cliente para autorização de acesso aos recursos da API Nox Manager. Necessário para realização de qualquer outra chamada da API. Esta autenticação utiliza o método de proteção utilizando de token Bearer JWT que expira após 60 minutos.| Método | POST |
|---|
| Endpoint | [URL_M2M]/account/login |
| Content-Type | application/json |
Corpo da Requisição#
Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:| Campo | Tipo | Descrição |
|---|
| id | Inteiro | Código único representando o identificador do cliente |
| usuario | String | String representando o usuário do cliente. Previamente compartilhado |
| senha | String | String representando a senha do cliente. Previamente compartilhada |
Retorno da Requisição#
| Código | Descrição |
|---|
| 200 | Usuário logado com sucesso |
| 404 | Login inválido |
| 500 | Outros erros |
Exemplo da requisição#
curl -u user:password -X POST "https://[URL-M2M]/account/login" \
-H "Content-Type: application/json" \
-d '{
"senha":"senha",
"usuario":"usuario",
"id":0
}'
Cadastro do Ponto IP#
Chamada referente à instalação de um NOX em um ponto de iluminação pública (luminária). Não é permitida a instalação de um NOX já instalado em outro ponto ou instalar um novo NOX em um ponto que já possui outro NOX instalado. Necessário realizar ação de substituição ou remoção para realizar os processos descritos anteriormente.| Método | POST |
|---|
| Endpoint | [URL_M2M]/ponto-de-iluminacao |
| Content-Type | application/json |
Corpo da Requisição#
Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:| Campo | Tipo | Descrição |
|---|
| idPontoServico * | String | Identificador único do ponto |
| idNox* | String | Código de identificação do material que representa o controlador NOX. Deve corresponder a uma string numérica de 7 dígitos |
| tensaoLuminaria | String | Tensão da luminária que contém o NOX |
| potenciaLuminaria | String | Potência da luminária que contém o NOX |
| fabricante | String | Nome do fabricante da luminária que contém o NOX |
| modelo | String | Descrição da luminária que contém o NOX |
| logradouro | String | Nome do logradouro do ponto de serviço |
| cep | String | CEP do ponto de serviço |
| bairro | String | Bairro do ponto de serviço |
| numero | String | Número local do ponto de serviço |
| num_identificacao * | String | Código da plaqueta de identificação do ponto de serviço |
| latitude | String | Latitude do ponto de serviço |
| longitude | String | Longitude do ponto de serviço |
| dat_Evento * | String | Data da última manutenção que modificou alguma das informações relevantes à integração. Formato: yyyy-MM-dd’T’HH:mm:ss.SSS'Z' |
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.Retorno da Requisição#
| Código | Descrição |
|---|
| 200 | Instalação realizada com sucesso: Nox - XXXXXXX Plaqueta - XXXXX ID Ponto de Serviço - XXXXX |
| 401 | Acesso não permitido ao usuário ou usuário não logado |
| 403 | Erro: Somente um Nox sem instalação pode ser instalado; o Nox XXXXXXX está com sua instalação ativa |
| 404 | Erro: Nox inexistente: XXXXXXX |
| 500 | Outros erros no cadastro |
Exemplo da requisição#
curl -u user:password -X POST "https://[URL-M2M]/ponto-de-iluminacao" \
-H "Content-Type: application/json" \
-d '{
"numero":"",
"bairro":"Bairro Teste",
"latitude":"-9.400654000000000000000000",
"idNox":"02003492",
"num_identificacao":"37382",
"modelo":"Tipo de Lâmpada: LED, Potência da Lâmpada: 150.0, Potência de Reator: 0.0",
"cep":"",
"idPontoServico":"37382",
"logradouro":"Estr. Teste",
"fabricante":"",
"potenciaLuminaria":"150",
"dat_Evento":"2023-06-15T00:00:00.000Z",
"tensaoLuminaria":"0",
"longitude":"-40.479137000000000000000000"
}'
Edição do Ponto IP#
Chamada referente à edição dos dados cadastrais de um ponto de iluminação pública. Os dados editados são todos exceto idNox, idPontoServico, num_identificacao e dat_Evento.| Método | PATCH |
|---|
| Endpoint | [URL_M2M]/ponto-de-iluminacao |
| Content-Type | application/json |
Corpo da Requisição#
Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:| Campo | Tipo | Descrição |
|---|
| idPontoServico * | String | Identificador único do ponto |
| idNox* | String | Código de identificação do material que representa o controlador NOX. Deve corresponder a uma string numérica de 7 dígitos |
| tensaoLuminaria | String | Tensão da luminária que contém o NOX |
| potenciaLuminaria | String | Potência da luminária que contém o NOX |
| fabricante | String | Nome do fabricante da luminária que contém o NOX |
| modelo | String | Descrição da luminária que contém o NOX |
| logradouro | String | Nome do logradouro do ponto de serviço |
| cep | String | CEP do ponto de serviço |
| bairro | String | Bairro do ponto de serviço |
| numero | String | Número local do ponto de serviço |
| num_identificacao * | String | Código da plaqueta de identificação do ponto de serviço |
| latitude | String | Latitude do ponto de serviço |
| longitude | String | Longitude do ponto de serviço |
| dat_Evento * | String | Data da última manutenção que modificou alguma das informações relevantes à integração. Formato: yyyy-MM-dd’T’HH:mm:ss.SSS'Z' |
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.Retorno da Requisição#
| Código | Descrição |
|---|
| 200 | Instalação editada com sucesso: Nox - XXXXXXX Plaqueta - XXXXX ID Ponto de Serviço - XXXXX |
| 401 | Acesso não permitido ao usuário ou usuário não logado |
| 403 | Relação ponto de iluminação, NOX e código não condizentes com o mesmo ponto |
| 404 | Ponto de iluminação ou NOX não encontrados |
| 500 | Outros erros |
Exemplo da requisição#
curl -u user:password -X PATCH "https://[URL-M2M]/ponto-de-iluminacao" \
-H "Content-Type: application/json" \
-d '{
"numero":"",
"bairro":"Vila teste",
"latitude":"-9.374851000000000000000000",
"idNox":"02004090",
"num_identificacao":"0036067",
"modelo":"Tipo de Lâmpada: LED, Potência da Lâmpada: 160.0, Potência de Reator: 0.0",
"cep":"",
"idPontoServico":"36067",
"logradouro":"Avenida Teste",
"fabricante":"",
"potenciaLuminaria":"160",
"dat_Evento":"2022-06-21T00:00:00.000Z",
"tensaoLuminaria":"0",
"longitude":"-40.508221000000000000000000"
}'
Substituição de NOX em Ponto de IP#
Chamada referente à substituição de um NOX por outro em um ponto de iluminação pública (luminária).| Método | POST |
|---|
| Endpoint | [URL_M2M]/ponto-de-iluminacao/troca |
| Content-Type | application/json |
Corpo da Requisição#
Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:| Campo | Tipo | Descrição |
|---|
| idPontoServico * | String | Identificador único do ponto |
| idNox* | String | Código de identificação do material que representa o controlador NOX. Deve corresponder a uma string numérica de 7 dígitos |
| idNoxTroca * | String | Código de identificação do material que representa o controlador NOX que será instalado na substituição. Deve corresponder a uma string numérica de 7 dígitos |
| num_identificacao * | String | Código da plaqueta de identificação do ponto de serviço |
| dat_Evento * | String | Data da última manutenção que modificou alguma das informações relevantes à integração. Formato: yyyy-MM-dd’T’HH:mm:ss.SSS'Z' |
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.Retorno da Requisição#
| Código | Descrição |
|---|
| 200 | Troca realizada com sucesso: Nox Antigo - XXXXXXX Nox Novo - XXXXXXX Plaqueta - XXXXX ID Ponto de Serviço - XXXXX |
| 401 | Acesso não permitido ao usuário ou usuário não logado |
| 403 | Erro: O Nox de troca (XXXXXXX) já está instalado |
| 404 | Ponto de iluminação ou NOX não encontrados |
| 500 | Outros erros |
Exemplo da requisição#
curl -u user:password -X POST "https://[URL-M2M]/ponto-de-iluminacao/troca" \
-H "Content-Type: application/json" \
-d '{
"numero":"",
"bairro":"Vila Teste",
"latitude":"-9.377359000000000000000000",
"idNox":"02002986",
"num_identificacao":"0037249",
"modelo":"Tipo de Lâmpada: LED, Potência da Lâmpada: 120.0",
"cep":"",
"idPontoServico":"37249",
"logradouro":"Avenida Teste",
"idNoxTroca":"01000274",
"fabricante":"",
"potenciaLuminaria":"120",
"dat_Evento":"2024-01-21T18:46:00.000Z",
"tensaoLuminaria":"0",
"longitude":"-40.487027000000000000000000"
}'
Remoção de NOX de Ponto de IP#
Chamada referente à remoção de um NOX de um ponto de iluminação pública. Este ponto após ser removido é configurado como desativado.| Método | POST |
|---|
| Endpoint | [URL_M2M]/ponto-de-iluminacao/retirar |
| Content-Type | application/json |
Corpo da Requisição#
Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:| Campo | Tipo | Descrição |
|---|
| idPontoServico * | String | Identificador único do ponto |
| idNox* | String | Código de identificação do material que representa o controlador NOX. Deve corresponder a uma string numérica de 7 dígitos |
| num_identificacao * | String | Código da plaqueta de identificação do ponto de serviço |
| dat_Evento * | String | Data da última manutenção que modificou alguma das informações relevantes à integração. Formato: yyyy-MM-dd’T’HH:mm:ss.SSS'Z' |
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.Retorno da Requisição#
| Código | Descrição |
|---|
| 200 | Ponto de serviço desativado com sucesso: ID Ponto de Serviço - XXXXX Plaqueta - XXXXXXX |
| 401 | Acesso não permitido ao usuário ou usuário não logado |
| 403 | Ponto de iluminação ou NOX não instalados em conjunto |
| 404 | Ponto de iluminação ou NOX não encontrados |
| 500 | Outros erros |
Exemplo da requisição#
curl -u user:password -X POST "https://[URL-M2M]/ponto-de-iluminacao/retirar" \
-H "Content-Type: application/json" \
-d '{
"idPontoServico": "string",
"idNox": 2147483647,
"num_identificacao": "string",
"dat_Evento": "2024-12-20T23:32:34.574Z"
}'
Consulta de Ponto de IP#
Chamada referente à consulta de um NOX através do código único de integração.| Método | GET |
|---|
| Endpoint | [URL_M2M]/ponto-de-iluminacao/{idPontoServico} |
| Content-Type | - |
Corpo da Requisição#
A requisição não precisa de um payload.Parâmetros da URI#
| Campo | Tipo | Descrição |
|---|
| idPontoServico * | String | Código único de cadastro do ponto |
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.Retorno da Requisição#
| Código | Descrição | Dados retorno |
|---|
| 200 | Ponto de serviço desativado com sucesso: ID Ponto de Serviço - XXXXX Plaqueta - XXXXXXX | {"idPontoServico", “idNox”, “idNoxNovo", "tensaoLuminaria", "potenciaLuminaria", "fabricante", “modelo", "logradouro", "num_identificacao", "latitude", "longitude", "dat_Evento" } |
| 401 | Acesso não permitido ao usuário ou usuário não logado | |
| 404 | Ponto não encontrado | Nenhum Ponto de Iluminação com instalação ativa foi encontrado com a chave fornecida |
| 500 | Outros erros | |
Exemplo da requisição#
curl -u user:password -X GET "https://[URL-M2M]/ponto-de-iluminacao/38801"
Validação NOX#
Chamada referente à verificação de disponibilidade/existência de um NOX por meio de seu código.| Método | GET |
|---|
| Endpoint | [URL_M2M]/validaNox/{Val_Id} |
| Content-Type | - |
Corpo da Requisição#
A requisição não precisa de um payload.Parâmetros da URI#
| Campo | Tipo | Descrição |
|---|
| Val_Id * | String | Código único de cadastro do dispositivo NOX |
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.Retorno da Requisição#
| Código | Descrição |
|---|
| 200 | O nox existe e está disponível |
| Outro | Qualquer outra resposta significa que o nox não existe ou não está disponível |
Exemplo da requisição#
curl -u user:password -X GET "https://[URL-M2M]/validaNox/1"
Keep Alive#
Chamada referente à verificação de disponibilidade da API da M2M.| Método | GET |
|---|
| Endpoint | [URL_M2M]/keepalive |
| Content-Type | - |
Corpo da Requisição#
A requisição não precisa de um payload.Retorno da Requisição#
| Código | Descrição |
|---|
| 200 | O serviço está disponível |
| Outro | Qualquer outra resposta significa que o serviço não está disponível ou não está funcionando |
Exemplo da requisição#
curl -u user:password -X GET "https://[URL-M2M]/keepalive"
Consultar indicador SIVI#
Chamada referente à consulta ao indicador SIVI de telegestão.| Método | GET |
|---|
| Endpoint | [URL_M2M]/IndicadorSIVI |
| Content-Type | - |
Corpo da Requisição#
A requisição não precisa de um payload.Parâmetros da URI#
| Campo | Tipo | Descrição |
|---|
| Cod_Descricao_Grupo * | Inteiro | Código de descrição do grupo. Para este indicador, o valor deve ser sempre 254 |
| dataIni | Date | String representando a data de início do período de consulta. A data deve estar no formato yyyy-MM-dd |
| dataFim | Date | String representando a data final do período de consulta. A data deve estar no formato yyyy-MM-dd |
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.Retorno da requisição#
| Código | Descrição |
|---|
| 200 | Consulta bem sucedida. São retornados os dados da consulta como no exemplo abaixo |
| Outro | Qualquer outra resposta é um erro, e a consulta não foi bem sucedida |
Exemplo de requisição#
curl -u user:password -X GET "https://[URL-M2M]/IndicadorSIVI?Cod_Descricao_Grupo=254&dataIni=2024-01-01&dataFim=2024-01-31"
Exemplo Corpo da Resposta#
{
"dsc_Grupo":”Instalados”,
"cod_Grupo": 41,
"totalPontos": 22320,
"data_Inicial": "2024-01-01T00:00:00",
"data_Final": "2024-01-02T00:00:00",
"nota": 0.75,
"indice_Geral": 0.921369,
“indicadoresSivi”: [
{
“indice”: 0.9319,
“pontos”: 20801,
“dataHora”: “01/01/2024 00:00:00”
},
{
“indice”: 0.93181,
“pontos”: 20798,
“dataHora”: “01/01/2024 01:00:00”
}
]
}
Consultar indicador SITO#
Chamada referente à consulta ao indicador SITO de telegestão.| Método | GET |
|---|
| Endpoint | [URL_M2M]/IndicadorSITO |
| Content-Type | - |
Corpo da Requisição#
A requisição não precisa de um payload.Parâmetros da URI#
| Campo | Tipo | Descrição |
|---|
| dataIni | Date | String representando a data de início do período de consulta. A data deve estar no formato yyyy-MM-dd |
| dataFim | Date | String representando a data final do período de consulta. A data deve estar no formato yyyy-MM-dd |
Retorno da requisição#
| Código | Descrição |
|---|
| 200 | Consulta bem sucedida. São retornados os dados da consulta como no exemplo abaixo |
| Outro | Qualquer outra resposta é um erro, e a consulta não foi bem sucedida |
Exemplo de requisição#
curl -u user:password -X GET "https://[URL-M2M]/IndicadorSITO?dataIni=2024-01-01&dataFim=2024-01-31"
Exemplo Corpo da Resposta#
{
"data_Inicial": "2024-01-01T00:00:00",
"data_Final": "2024-01-02T00:00:00",
"nota":1.0,
"indice_Geral": 1.0,
“historicoOperacoes”: [
{
“val_data”: ”01/01/2024 00:00:00”,
“val_hora”: 0,
“indiceIndividual”: 1.0
},
{
“val_data”: “01/01/2024 00:00:00”,
“val_hora”: 1,
“indiceIndividual”: 1.0
}
]
}
Consultar indicador SITI#
Chamada referente à consulta ao indicador SITI de telegestão.| Método | GET |
|---|
| Endpoint | [URL_M2M]/IndicadorSITI |
| Content-Type | - |
Corpo da Requisição#
A requisição não precisa de um payload.Retorno da requisição#
| Código | Descrição |
|---|
| 200 | Consulta bem sucedida. São retornados os dados da consulta como no exemplo abaixo |
| Outro | Qualquer outra resposta é um erro, e a consulta não foi bem sucedida |
Exemplo da requisição#
curl -u user:password -X GET "https://[URL-M2M]/IndicadorSITI"
Exemplo Corpo da Resposta#
{
"dsc_Comando":”Operação por Fotocélula”,
"data_Inicial": "2024-01-01T00:00:00",
"nota": 0.75,
"indice_Geral": 0.9479,
“pontos_OK”: 346,
"totalPontos": 22320,
“indicadoresSITI”: [
{
“val_Id”: 700006,
“status”: “OK”,
“data_Envio”: “2023-06-27T19:27:31.473”,
“data_Resposta”: “2023-06-27T19:28:52.82”,
“tempo_Segundos”: 78.347
},
{
“val_Id”: 700062,
“status”: “OK”,
“data_Envio”: “2023-06-27T19:27:34.493”,
“data_Resposta”: “2023-06-27T19:27:46.147”,
“tempo_Segundos”: 11.654
}
]
}
Encerrar solicitação#
Chamada a API da M2M para encerrar as solicitações abertas no sistema da Exati.| Método | POST |
|---|
| Endpoint | [URL_M2M]/service-order/exati/encerra |
| Content-Type | application/json |
Corpo da Requisição#
Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:| Campo | Tipo | Descrição |
|---|
| operacao | String | Tipo de operação da requisição, que neste caso é “encerra” |
| origem | String | Código de origem da ocorrência externa cadastrada na tela de Origens ocorrência externa no sistema da Exati |
| id_protocolo | Integer | Identificação do protocolo |
| justificativa | String | String de descrição do motivo de encerramento da solicitação |
Exemplo da requisição#
curl -u user:password -X POST "https://[URL-M2M]/service-order/exati/encerra" \
-H "Content-Type: application/json" \
-d '{
"operacao": "encerra",
"id_protocolo": 1,
"justificativa": "teste",
"origem": "tg"
}'
Modified at 2025-02-26 20:32:17