Logo da empresa

Documentação da API - Hidrômetro Sysmar

Versão 1.2 — Integração via REST para ordens de serviço de hidrômetro.

Atualizado em Agosto/2025 — Desenvolvido por Sysmar

Sumário

GET /auth/login-token/{cpfcnpj}/{senha}

Parâmetro Tipo Obrigatório Descrição
cpfcnpj String Sim CPF ou CNPJ do usuário
senha String Sim Senha do usuário

Resposta:

Tabela
ResponseAuth
Exemplo Resposta 200:
{
  "token": "...",
  "duration": 12000,
  "pessoa": {
    "nome": "Luiz Henrique Padilha",
    "acessarResourceDebitoApi": false,
    "acessarResourceHidrometroApi": true
  }
}
Exemplo Resposta 401:
{
    "status": 401,
    "message": "usuário ou senha inválidos"
}

POST /api/hidrometro/ordem-servico-trocahd-completa

Headers:

Nome Tipo Descrição
Authorization String Bearer Token JWT
Content-Type String application/json

Body:

Tabela Campo Obrigatório
OrdemServicoTrocaHDCompletaVO numeroUnidadeConsumidora Sim
OrdemServicoTrocaHDCompletaVO matriculaFuncionarioAbertura Sim
OrdemServicoTrocaHDCompletaVO observacaoTexto Sim
OrdemServicoTrocaHDCompletaVO matriculaFuncionarioExecucao Sim
OrdemServicoTrocaHDCompletaVO dataRetiradaHD Sim
OrdemServicoTrocaHDCompletaVO dataInstalacaoHD Sim
OrdemServicoTrocaHDCompletaVO leituraAtualRetirada Sim
OrdemServicoTrocaHDCompletaVO leituraAtualInstalacao Sim
OrdemServicoTrocaHDCompletaVO numeroHidrometroRetirada Sim
OrdemServicoTrocaHDCompletaVO parecerTexto Sim
OrdemServicoTrocaHDCompletaVO hidrometroInstalado Sim
HidrometroVO numero Sim
HidrometroVO diametro Não
HidrometroVO vazao Não
HidrometroVO codigoRadioTelemetria Não
HidrometroVO leituraPorTelemetria Sim

Exemplo de Body:

{
    "numeroUnidadeConsumidora": 123456,
    "matriculaFuncionarioAbertura": "1234",
    "observacaoTexto": "Troca para telemetria",
    "matriculaFuncionarioExecucao": "311",
    "dataRetiradaHD": "05/06/2025",
    "dataInstalacaoHD": "05/06/2025",
    "leituraAtualRetirada": 1,
    "leituraAtualInstalacao": 2,
    "numeroHidrometroRetirada": "Y15L890783",
    "parecerTexto": "Substituição necessária",
    "hidrometroInstalado": {
      "numero": "Y15L8907831",
      "diametro": null,
      "vazao": null,
      "codigoRadioTelemetria": null,
      "leituraPorTelemetria": true
    }
}

Resposta:

Tabela Tipo result
ResponseHidrometroVO Integer
Exemplo Resposta 200:
{
    "result": 1001,
    "mensagem": "Processado com sucesso",
    "erros": [],
    "errosCodigo": []
}
Exemplo Resposta 400:
{
    "result": null,
    "mensagem": "Erro ao processar a requisição",
    "erros": [
            Já existe uma ordem de serviço com os seguintes filtros: unidade consumidora e hidrômetro instalação,
            Não é permitida a troca de hidrômetro. A unidade consumidora está vinculada a uma remessa de leitura não concluída,
            Funcionário não encontrado para a matrícula informada,
            Leitura anterior não encontrada com os seguintes filtros: unidade consumidora e data de retirada,
            Não é permitida a conclusão da troca de hidrômetro, pois a última leitura indica que o hidrômetro atual é igual ao novo,
            Unidade consumidora não encontrada para o número informado,
            Padrão data inválido, deve ser informado com padrão: dd/MM/yyyy,
            Serviço de abertura não encontrado no sistema,
            Já existe uma ordem de serviço aberta com os seguintes filtros: unidade consumidora e serviço,
            JSON inválido, verifique se todos os campos obrigatórios estão informados,
            Leitura de retirada inválida, leitura de retirada deve ser maior que a leitura anterior

    ],
    "errosCodigo": [2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14]
}

POST /api/hidrometro/ordem-servico-abertura-completa

Headers:

Nome Tipo Descrição
Authorization String Bearer Token JWT
Content-Type String application/json

Body:

Tabela Campo Obrigatório
OrdemServicoAberturaCompletaVO numeroUnidadeConsumidora Sim
OrdemServicoAberturaCompletaVO matriculaFuncionarioAbertura Sim
OrdemServicoAberturaCompletaVO observacaoTexto Sim
OrdemServicoAberturaCompletaVO matriculaFuncionarioExecucao Sim
OrdemServicoAberturaCompletaVO dataInstalacaoHD Sim
OrdemServicoAberturaCompletaVO leituraAtualInstalacao Sim
OrdemServicoAberturaCompletaVO parecerTexto Sim
OrdemServicoAberturaCompletaVO hidrometroInstalado Sim
HidrometroVO numero Sim
HidrometroVO diametro Não
HidrometroVO vazao Não
HidrometroVO codigoRadioTelemetria Não
HidrometroVO leituraPorTelemetria Sim

Exemplo de Body:

{
    "numeroUnidadeConsumidora": 123456,
    "matriculaFuncionarioAbertura": "1234",
    "observacaoTexto": "Troca para telemetria",
    "matriculaFuncionarioExecucao": "311",
    "dataInstalacaoHD": "05/06/2025",
    "leituraAtualInstalacao": 2,
    "parecerTexto": "Substituição necessária",
    "hidrometroInstalado": {
      "numero": "Y15L8907831",
      "diametro": null,
      "vazao": null,
      "codigoRadioTelemetria": null,
      "leituraPorTelemetria": true
    }
}

Resposta:

Tabela Tipo result
ResponseHidrometroVO Integer
Exemplo Resposta 200:
{
    "result": 1001,
    "mensagem": "Processado com sucesso",
    "erros": [],
    "errosCodigo": []
}
Exemplo Resposta 400:
{
    "result": null,
    "mensagem": "Erro ao processar a requisição",
    "erros": [
            Já existe uma ordem de serviço com os seguintes filtros: unidade consumidora e hidrômetro instalação,
            Não é permitida a troca de hidrômetro. A unidade consumidora está vinculada a uma remessa de leitura não concluída,
            Funcionário não encontrado para a matrícula informada,
            Não é permitida a conclusão da troca de hidrômetro, pois a última leitura indica que o hidrômetro atual é igual ao novo,
            Unidade consumidora não encontrada para o número informado,
            Padrão data inválido, deve ser informado com padrão: dd/MM/yyyy,
            Serviço de abertura não encontrado no sistema,
            Já existe uma ordem de serviço aberta com os seguintes filtros: unidade consumidora e serviço,
            JSON inválido, verifique se todos os campos obrigatórios estão informados

    ],
    "errosCodigo": [2, 3, 4, 6, 7, 9, 10, 11, 13]
}

GET /api/hidrometro/has-remessa-leitura-andamento/{numeroUnidade}

Parâmetro Tipo Obrigatório Descrição
numeroUnidade Integer Sim Número da unidade consumidora

Headers:

Nome Tipo Descrição
Authorization String Bearer Token JWT
Content-Type String application/json

Resposta:

Tabela Tipo result
ResponseHidrometroVO Boolean
Exemplo Resposta 200:
{
    "result": true,
    "mensagem": "Processado com sucesso",
    "erros": [],
    "errosCodigo": []
}
Exemplo Resposta 400:
{
    "result": null,
    "mensagem": "Erro ao processar a requisição",
      "erros": [
              Unidade consumidora não encontrada para o número informado
    ],
    "errosCodigo": [7]
}

GET /api/hidrometro/rotas-em-remessa-nao-concluida

Headers:

Nome Tipo Descrição
Authorization String Bearer Token JWT
Content-Type String application/json

Resposta:

Tabela Tipo result
ResponseHidrometroVO Array<RotaSaneamentoVO>
Exemplo Resposta 200:
{
    "result": [
      {
        "codigo": 10,
        "descricao": "ROTA 10"
      },
      {
        "codigo": 90,
        "descricao": "ROTA 90"
      }
    ],
    "mensagem": "Processado com sucesso",
    "erros": [],
    "errosCodigo": []
}

Códigos de Erro

Código Descrição
1 Usuário ou senha inválidos
2 Já existe uma ordem de serviço com os seguintes filtros: unidade consumidora e hidrômetro instalação
3 Não é permitida a troca de hidrômetro. A unidade consumidora está vinculada a uma remessa de leitura não concluída
4 Funcionário não encontrado para a matrícula informada
5 Leitura anterior não encontrada com os seguintes filtros: unidade consumidora e data de retirada
6 Não é permitida a conclusão da troca de hidrômetro, pois a última leitura indica que o hidrômetro atual é igual ao novo
7 Unidade consumidora não encontrada para o número informado
8 Serviço de troca de hidrômetro não encontrado
9 Padrão data inválido, deve ser informado com padrão: dd/MM/yyyy
10 Serviço de abertura não encontrado no sistema
11 Já existe uma ordem de serviço aberta com os seguintes filtros: unidade consumidora e serviço
13 JSON inválido, verifique se todos os campos obrigatórios estão informados
14 Leitura de retirada inválida, leitura de retirada deve ser maior que a leitura anterior

Tabelas

OrdemServicoTrocaHDCompletaVO

Campo Tipo Descrição
numeroUnidadeConsumidoraIntegerNúmero da unidade consumidora
matriculaFuncionarioAberturaStringMatrícula do funcionário que abriu a OS
observacaoTextoStringObservações gerais
matriculaFuncionarioExecucaoStringMatrícula do executor da OS
dataRetiradaHDString (dd/MM/yyyy)Data de retirada do hidrômetro
dataInstalacaoHDString (dd/MM/yyyy)Data de instalação do novo hidrômetro
leituraAtualRetiradaIntegerLeitura do hidrômetro retirado
leituraAtualInstalacaoIntegerLeitura inicial do novo hidrômetro
numeroHidrometroRetiradaStringNúmero de série do hidrômetro retirado
parecerTextoStringParecer técnico sobre a troca
hidrometroInstaladoHidrometroVOTabela com dados do novo hidrômetro

OrdemServicoAberturaCompletaVO

Campo Tipo Descrição
numeroUnidadeConsumidoraIntegerNúmero da unidade consumidora
matriculaFuncionarioAberturaStringMatrícula do funcionário que abriu a OS
observacaoTextoStringObservações gerais
matriculaFuncionarioExecucaoStringMatrícula do executor da OS
dataInstalacaoHDString (dd/MM/yyyy)Data de instalação do novo hidrômetro
leituraAtualInstalacaoIntegerLeitura inicial do novo hidrômetro
parecerTextoStringParecer técnico sobre a troca
hidrometroInstaladoHidrometroVOTabela com dados do novo hidrômetro

HidrometroVO

Campo Tipo Descrição
numeroStringNúmero de série do hidrômetro
diametroStringDiâmetro do hidrômetro (opcional)
vazaoStringVazão nominal (opcional)
codigoRadioTelemetriaIntegerCódigo da telemetria, se houver
leituraPorTelemetriaBooleanIndica se a leitura é via telemetria

ResponseHidrometroVO

Campo Tipo Descrição
resultObjectResultado da operação e seu tipo é definido em cada endpoint
mensagemStringMensagem descritiva com o status da operação
errosArray<String>Lista textual de erros ocorridos durante o processamento da requisição
errosCodigoArray<Integer>Códigos numéricos correspondentes aos erros (referenciam a seção Códigos de Erro)

ResponseAuth

Campo Tipo Descrição
tokenStringToken jwt
durationIntegerDuração do token em segundos
userUserUsuário autenticado

User

Campo Tipo Descrição
nomeStringNome do usuário
acessarResourceDebitoApiBooleanAcesso permitido a resource de débito
acessarResourceHidrometroApiBooleanAcesso permitido a resource de hidrômetro

RotaSaneamentoVO

Campo Tipo Descrição
codigoIntegerCódigo
descricaoStringDescrição