HBSA Public
  1. Navigation
HBSA Public
  • Hidrovias do Brasil APIs
  • Autenticação
    • Introdução
    • Client Credentials
    • API Key
    • Gerando token client_credentials
      POST
  • WebSockets
    • Introdução
    • Navigation
      • Tracker
      • Hydrometric Stations
  • REST
    • Navigation
      • Hydrometric Stations
        • Stations
          • Get all sensors data by Filter
          • Get all stations
    • Integrações Externas
      • Pesagem
        • Introdução
        • Adiciona ou atualiza os dados de pesagem
  • GraphQL
    • Introdução
    • Relatórios
      • Introdução
      • Grãos
        • Estoque
        • Exemplo de execução
      • Fertilizantes
        • Expedição Rodoviária
  1. Navigation

Tracker

INFORMAÇÃO
WebSocket API para obter atualizações de localização dos ativos da Hidrovias do Brasil. O serviço foi construído ASPNET Core SignalR, então já existe SDK para diversas plataformas. Utilize o SDK adequado para sua linguagem.

Urls#

AmbienteAPI Url
qawss://apis.qa01.hbsa.com.br/navigation-tracker/hubs/trackings
prodwss://apis.hbsa.com.br/navigation-tracker/hubs/trackings

Autenticação#

A API exige um token JWT para realizar autenticação e também autorização.
AVISO
Caso não tenha ainda um client entre em contato com o time da Hidrovias do Brasil

Invocando métodos#

Payload de resposta#

A invocação de métodos respeita o padrão de request-response e definimos um payload padrão para todas as respostas facilitando o tratamento das respostas
Json schema da resposta
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message"
      ]
    },
    "data": {
      "type": "object"
    }
  },
  "required": [
    "success"
  ]
}
As propriedades data e error são opcionais pois dependem do valor de success.
Segue um exemplo de erro real:
{
  "success": false,
  "error": {
    "code": "ACQA-TRACKER-01",
    "message": "The Tenant value is not valid."
  }
}

Catálogo de erros#

Quando o servidor retorna um erro tratado os erros esperados são descritos abaixo:
CódigoMensagem
ACQA-TRACKER-01O tenant informado não é valido

Eventos#

Tenants#

Os eventos serão segregados por tenant. O tenant representa a operação da Hidrovias do Brasil.
TenantDescrição
br01Dados da operação do norte do Brasil
py01Dados da operação do Paraguai
No momento de assinar um evento é possível informar qual tenant você está consultando
INFORMAÇÃO
Se não for informado tenant, todos os dados de todos os tenants serão retornados

Exemplos em js de assinatura de eventos:#

receive-pusher-trackings#

INFORMAÇÃO
O evento receive-pusher-trackings retorna as informações de localização em tempo real dos empurradores da Hidrovias.
O json schema do evento é:
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "tenant": {
      "type": "string"
    },
    "boatName": {
      "type": "string"
    },
    "utcDatetime": {
      "type": "string"
    },
    "positionSourceId": {
      "type": "integer"
    },
    "positionId": {
      "type": "integer"
    },
    "sourceId": {
      "type": "integer"
    },
    "riverId": {
      "type": "integer"
    },
    "km": {
      "type": "number"
    },
    "latitude": {
      "type": "number"
    },
    "longitude": {
      "type": "number"
    },
    "groundSpeed": {
      "type": "integer"
    },
    "trueHeading": {
      "type": "number"
    },
    "cog": {
      "type": "number"
    },
    "sounder": {
      "type": "integer"
    },
    "windDirection": {
      "type": "integer"
    },
    "windSpeed": {
      "type": "integer"
    },
    "mmsi": {
      "type": "string"
    },
    "imo": {
      "type": "string"
    },
    "length": {
      "type": "number"
    },
    "beam": {
      "type": "number"
    }
  },
  "required": [
    "tenant",
    "boatName",
    "utcDatetime",
    "positionSourceId",
    "positionId",
    "sourceId",
    "riverId",
    "km",
    "latitude",
    "longitude",
    "groundSpeed",
    "trueHeading",
    "cog",
    "sounder",
    "windDirection",
    "windSpeed",
    "mmsi",
    "imo",
    "length",
    "beam"
  ]
}

Assinando evento#

Para realizar a assinatura é necessário invocar o método subscribe-pusher e então fazer o subscribe no evento receive-pusher-trackings.
Segue o exemplo de um registro desse evento:
{
  "tenant": "br01",
  "boatName": "HB AQUARIUS",
  "utcDatetime": "2024-07-11T18:02:00",
  "positionSourceId": 9,
  "positionId": 221667688,
  "sourceId": 0,
  "riverId": 4,
  "km": 1639.67,
  "latitude": -25.221073,
  "longitude": -57.580936,
  "groundSpeed": 0,
  "trueHeading": 32.9,
  "cog": 310.4,
  "sounder": 0,
  "windDirection": 511,
  "windSpeed": 0,
  "mmsi": "720986000",
  "imo": "9686467",
  "length": 45.6,
  "beam": 16.6
}

receive-ais-trackings#

INFORMAÇÃO
O evento receive-ais-trackings retorna as informações capturadas dos AIS próximos aos empurradores
O json schema do evento é:
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "tenant": {
      "type": "string"
    },
    "boatName": {
      "type": "string"
    },
    "utcDatetime": {
      "type": "string"
    },
    "positionSourceId": {
      "type": "integer"
    },
    "positionId": {
      "type": "integer"
    },
    "sourceId": {
      "type": "integer"
    },
    "riverId": {
      "type": "integer"
    },
    "km": {
      "type": "number"
    },
    "latitude": {
      "type": "number"
    },
    "longitude": {
      "type": "number"
    },
    "groundSpeed": {
      "type": "number"
    },
    "trueHeading": {
      "type": "number"
    },
    "cog": {
      "type": "number"
    },
    "sounder": {
      "type": "integer"
    },
    "windDirection": {
      "type": "integer"
    },
    "windSpeed": {
      "type": "integer"
    },
    "mmsi": {
      "type": "string"
    },
    "imo": {
      "type": "string"
    }
  },
  "required": [
    "tenant",
    "boatName",
    "utcDatetime",
    "positionSourceId",
    "positionId",
    "sourceId",
    "riverId",
    "km",
    "latitude",
    "longitude",
    "groundSpeed",
    "trueHeading",
    "cog",
    "sounder",
    "windDirection",
    "windSpeed",
    "mmsi",
    "imo"
  ]
}

Assinando evento#

Para realizar a assinatura é necessário invocar o método subscribe-ais e então fazer o subscribe no evento receive-ais-trackings.
Segue o exemplo de um registro desse evento:
{
  "tenant": "br01",
  "boatName": "HERKULES XVIII",
  "utcDatetime": "2024-06-26T20:42:00",
  "positionSourceId": 9,
  "positionId": 218815150,
  "sourceId": 0,
  "riverId": 4,
  "km": 2155.65,
  "latitude": -22.194872,
  "longitude": -57.974667,
  "groundSpeed": 9.8,
  "trueHeading": 2.4,
  "cog": 2.7,
  "sounder": 0,
  "windDirection": 511,
  "windSpeed": 0,
  "mmsi": "720986000",
  "imo": "9686467"
}

Exemplo de consumo#

Abaixo um exemplo utilizando C#:
Modificado em 2024-09-23 19:13:48
Página anterior
Introdução
Próxima página
Hydrometric Stations
Built with